Shell字符截取命令

1. cut [选项] 文件名

-f 列号 提取到第几列
-d 分隔符 按照指定分隔符分割列

cut -f 2 student.txt 第四列
cut -f 2,4 student.txt 第2,4列
cut -d “:” -f 1,3 /etc/passwd 第1,3列 以:为分隔符

2. printf ’ 输出类型输出格式 输出内容 ’

输出类型:

  • %ns : 输出字符串。n 是数字指代输出几个字符,不写n的话全部输出
  • %ni : 输出整数。n 是数字指代输出几个数字
  • %m .nf :输出浮点数,m 输出位数,n 输出小数位数
    输出格式:
    \a :输出警告声音
    \b :输出退格键
    \f :清除屏幕
    \n :换行
    \r :回车
    \t :水平输出退格键
    \v :垂直输出退格键

eg
printf ‘%s’ $(cat student.txt)

3. awk ‘条件1{动作1} 条件2{动作2}…’ 文件名 #默认使用制表符或者空格作为分隔符

条件(pattern):

  • 一般使用关系表达式作为条件
  • x > 10
    动作:
  • 格式化输出
  • 流程控制语句
    eg
    awk ‘{printf $2 “\t” $4 “\n”}’ stedent.txt #输出第2,4列
    df -h | awk ‘{printf $1 “\t” $3 “\n”}’
    awk ‘EDGIN{printf $2 “\t” $4 “\n”}’ stedent.txt #输出第2,4列
    awk ‘END{printf $2 “\t” $4 “\n”}’ stedent.txt #输出第2,4列
    awk ‘BEGIN{FS=":"} {printf $2 “\t” $4 “\n”}’
    cat student.txt | grep -v Name | awk ‘$4>70{print $2}’ #打印成绩大于70的成绩

4. sed [选项] ‘[动作]’ 文件名

选项:
-n :一般sed 命令会把所有数据都输出,如果加入此选择则只会把经过sed命令处理的行输出
-e :允许对输入数据应用多条sed命令编辑
-i :用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出
动作:
-a:追加,在当前行后添加一行或多行
-c:行替换,用c后面再字符串替换原始数据行
-i :插入,在当前行插入一行或者多行,
-d:删除,删除指定行
-p:打印
-s:字符替换,格式为 “行范围s/旧字符/新字符/g”
eg:
sed -n ‘2p’ student.txt #打印第二行
sed ‘2,4d’ student.txt #删除第二行到第四行,但不修改文件本身
sed ‘2a hello’ studdent.txt #在第二行追加hello
sed ‘2i hello’ studdent.txt #在第二行前插入hello
sed ‘4c hello’ student.txt #将第四行替换为hello
sed ‘3s/60/99/g’ student.txt #将第三行中的60替换为99
sed -i ‘3s/60/99/g’ student.txt #将结果直接写入文件
sed -e ‘s/aaa/hello/g ; s/ccc/hello/g’ student.txt #替换多个

5. sort [选项] 文件名

选项:
-f:忽略大小写
-n:以数值型进行排序,默认使用字符串型
-r:反向排序
-t:指定分隔符,默认分隔符是制表符
-k n[,m]: 按照指定的字段范围排序,从第n字段开始,m字段结束,默认到行尾
eg
sort /etc/passwd
sort -r /etc/passwd
sort -t “:” -k “3,3” /etc/passwd #指定分隔符,用第三字段开头,第三字段结尾排序
sort -n -t “:” -k “3,3” /etc/passwd

6. wc [选项] 文件名 #默认统计行数,单词数和字符数

选项:
-l:只统计行数
-w:只统计单词数
-m:只统计字符数

猜你喜欢

转载自blog.csdn.net/canhelove/article/details/88711304