Atopos

导航

Linux中文本处理 命令和三剑客之sed

1.文本处理命令

1.1 sort命令

1.1.1简介

sort命令是用于将文件内容加以排序

1.1.2语法格式

关键字:sort(默认以第一个字位排序)

参数1:-n (依照数值的大小排序)
参数2:-r (以相反的顺序来排序)
参数3:-k (以某列进行排序)
参数4:-t (指定分隔符,默认是以空格为分隔符)

eg:
[root@localhost ~]# sort -n -r -k6 -t '|' 3.txt

1.2 uniq命令

1.2.1简介

uniq命令用于检查及删除文本文件中的重复出现的行列,一般与sort命令结合使用

1.2.2语法句式

关键字:uniq(只把相邻的重复的内容去掉,如果想把不相邻的重复的内容也去掉,先排序(sort)再去重)
eg:
[root@localhost ~]# sort 4.txt | uniq
参数1:-c(在每列旁边显示该行重复出现的次数)
eg:
[root@localhost ~]# sort 4.txt | uniq -c
参数2:-d(仅显示重复出现的行列)
eg:
[root@localhost ~]# sort 4.txt | uniq -d
参数3:-u(仅显示出一次的行列)
eg:
[root@localhost ~]# sort 4.txt | uniq -u

1.3 cut命令

1.3.1简介

cut命令用来显示行中的指定部分,删除文件中指定字段

1.3.2语法句式

关键字:cut
参数1:-d(指定字段的分隔符,默认的字段分隔符为'TAB')

参数2:-f(显示指定字段的内容)
eg:
[root@localhost ~]# cut -d '|'  -f2 3.txt

1.4 tr命令

1.4.1简介

tr命令是替换或删除命令

1.4.2语法句式

关键字:tr
eg:
[root@localhost ~]# cat 4.txt | tr 1111 5555
参数:-d(删除字符)
eg:
[root@localhost ~]# cat 4.txt | tr -d '1111'

1.5 wc命令

1.5.1简介

wc命令是统计,计算数字的

1.5.2语法句式

关键字:wc

参数1:-c(统计文件的Bytes数)
eg:
[root@localhost ~]# cat 5.txt | wc -c
参数2:-l(统计文件的行数)
eg:
[root@localhost ~]# cat 5.txt | wc -l

参数3:-w(统计文件统计文件中单词的个数,默认以空白字符作为分隔符)
eg:
[root@localhost ~]# cat 5.txt | wc -w

PS:
   在Linux系统中,一段连续的数字或字母组合为一个词。

2.三剑客之sed

2.1简介

sed是linux中的一种编辑器(流媒体编辑器)

2.2语法格式

sed [参数] '处理规则' [操作对象]

关键字:sed

参数1:-e (允许多项编辑)
eg:
[root@localhost ~]# sed -e '3d' -e '4d' 4.txt

参数2:-n (取消默认输出)
eg:
[root@localhost ~]# sed -e '3d' -e '4d' -n 4.txt # 取消输出内容

参数3:-i (就地编辑(把展示的内容写入到文件里))
eg:
[root@localhost ~]# sed -i '3p' 4.txt

参数4:-r (支持拓展正则)
eg:
[root@localhost ~]# sed -r '/111/d' 4.txt

参数5:-f (指定sed匹配规则脚本文件)
eg:
[root@localhost ~]# sed -f r.txt 4.txt # r.txt-->(/1111/d)

2.3定位

2.3.1数字定位法

指定行号
eg:
[root@localhost ~]# sed '3d' 4.txt
[root@localhost ~]# sed '2,3d' 4.txt

2.3.2正则定位法

指定正则定位
eg:
[root@localhost ~]# sed '/a/d' 1.txt
eg:
[root@localhost ~]# sed '/^b/d' 1.txt

2.3.3数字和正则定位法

从第几行到正则匹配的第几行
eg:
[root@localhost ~]# sed '2,/^c/d' 1.txt

2.3.4正则正则定位法

从正则匹配的第几行到正则匹配的第几行
eg:
[root@localhost ~]# sed '/^w/,/^y/d' 1.txt

2.4 sed的编辑模式

模式1:d(删除)
[root@localhost ~]# sed '/^w/,/^y/d' 1.txt

模式2:p (打印)
[root@localhost ~]# sed '3p' 4.txt

模式3:a (在当前行前后添加一行或多行)
[root@localhost ~]# sed '3axxx' 1.txt # 在第三行后面添加一行

模式4:c (用新文本修改(替换)当前行)
[root@localhost ~]# sed '1cxxxx' 1.txt

模式5:i (在当前行之前,插入文本(单独使用时))
[root@localhost ~]# sed '2ixxxx' 1.txt

模式6:r (在文件中读内容,将所读内容插入文件中)
[root@localhost ~]# sed '2r r.txt' 1.txt # 在1.txt文件中第2行读内容,将所读内容插入第2行后

模式7:w (将指定行写入文件)
[root@localhost ~]# sed '2w w.txt' 1.txt

模式8:y (将字符转换成另一个字符)
[root@localhost ~]# sed '1y/w/a/' 1.txt # 将第一行的w替换成a

PS:
   y是将单个字符单个字符进行替换

模式9:s (将字符串转换成另一个字符串(每一行只替换一次))
[root@localhost ~]# sed 's/11/22/' 5.txt

模式10:g (全部执行)
[root@localhost ~]# sed 's/11/22/g' 5.txt

模式11:i (忽略大小写(和s模式一起使用时))
[root@localhost ~]# sed 's/W/a/gi' 1.txt

模式12:& (代表前面匹配到的内容)
[root@localhost ~]# sed 's/.*/# &/g' /etc/nginx/nginx.conf

posted on 2021-12-21 22:49  Atopos_q  阅读(14)  评论(0编辑  收藏  举报