shell的常用工具 cut sed awk sort

目录

1. cut(-d -f)

2. sed(-e a d s)

3. awk(-F、-v)(NR、NF)

4. sort(-t -n -r -k)


1. cut(-d -f)

cut用于在文件中剪切字节、字符、字段,并将这些数据输出

cut -d 分隔符 -f 列号 filename

-d后接分隔符,将文件按照分隔符分成若干列

-f后接列号,提取第几列,

  后接n-表示提取n列开始往后的所有列

  后接n,m表示提取第n列和m列

常与|管道符grep "字段"(过滤出含字段的行)配合使用

2. sed(-e a d s)

sed是流编辑器,一次处理一行的内容,用于对文件内容进行临时的增删改到缓冲区,再显示缓冲区的内容,但并不改变文件内容

sed (-e)'command' filename

command包含a(新增)、d(删除)、s(查找并替换)

(1)在文件第2行下新增内容xin zeng(行号a String)

         sed '2a xin zeng' filename

(2)删除文件中包含de的行(/字段/d,行号d)

         sed '/de/d' filename

(3)将文件中所有n改成m(s/字段1/字段2/g,g指global全局替换)

         sed 's/n/m/g' filename

(4)-e的使用,将文件的第3行删除,并将所有wo替换成ni

         sed -e '3d' -e 's/wo/ni/g' filename

3. awk(-F、-v)(NR、NF)

awk一般用于根据模式匹配来查询特定行,然后进行action操作,再显示出来

空格为默认分隔符,也可用-F进行指定

awk -F 分隔符 -v 自定义变量(eg:i=1) '/模式匹配1/{action} /模式匹配2/{action} ...' filename

模式匹配^...,以...开头;...$,以...结尾

也可在' '中加上BEGIN和END,BEGIN 在所有数据读取行之前执行;END 在所有数据执行之后执行

ps:awk的内置变量:FILENAME文件名,NR行号,NF切割后列的个数

eg:查询sed.txt中空行所在的行号
awk -F: '/^$/{print NR}' sed.txt

 

4. sort(-t -n -r -k)

sort用于在linux中对文件进行排序,并输出排序结果

sort 选项 filename

选项: -t 设置排序时所用的分隔符

            -n 按照数值大小排序

            -r 以相反顺序排序

            -k 指定需要排序的列

eg:对sort.txt文件按照:分隔后的第5列倒序排序
sort -t : -nrk 3 sort.txt

猜你喜欢

转载自blog.csdn.net/wx1528159409/article/details/86925571
今日推荐