文本处理命令和sed
一、文本处理命令
1.重点(3)
-
实现的功能(8)
排序,去重,显示指定部分,替换,删除,统计字节数,统计行数,统计单词数 -
相关命令(5)
sort (4)、uniq(3)、cut(2)、tr(1)、wc(3) -
参数(10)
-n, -r, -k, -t, -c, -d, -u, -f , -l, -w
2.详细内容
- 用于将文件内容加以排序 :sort命令
序号 | 功能 | 参数 |
---|---|---|
1 | 根据数值从小到大排序 | -n |
2 | 根据数值从大到小排序 | -r |
3 | 以某列进行排序 | -k |
4 | 指定分割符,默认是以空格为分隔符 | -t |
- 检查及删除文本文件中重复出现的行列 : uniq
序号 | 功能 | 参数 |
---|---|---|
1 | 在每列旁边显示该行重复出现的次数 | -c |
2 | 仅显示重复出现的行列 | -d |
3 | 仅显示出一次的行列 | -u |
- 显示行中的指定部分,删除文件中指定字段 : cut命令
序号 | 功能 | 参数 |
---|---|---|
1 | 指定字段的分隔符,默认的字段分隔符为"TAB" | -d |
2 | 显示指定字段的内容 | -f |
- 替换或删除命令 :tr -d 删除字符
- 统计,计算数字:wc
序号 | 功能 | 参数 |
---|---|---|
1 | 统计文件的Bytes数 | -c |
2 | 统计文件的行数 | -l |
3 | 统计文件中单词的个数,默认以空白字符做为分隔符 | -u |
二、Linux三剑客之sed命令
1.重点(6)
-
三剑客的功能(3)
grep, sed, awk
-
sed命令的格式
-
参数功能(5)
允许多项编辑,取消默认输出,就地编辑,支持拓展正则,指定sed匹配规则脚本文件 -
编辑模式功能(12)
删除,打印,在当前行后添加一行或多行,用新文本修改(替换)当前行,在当前行之前,插入文本,将所在行下一行增加从文件中读取的内容 -
参数符号(5)
-e, -n, -i, -r, -f -
编辑模式符号(12)
d, p, a, c, i, r, w, y, s, g, i, & -
定位(4)
数字定位,正则定位,数字和正则定位,正则和正则定位
2.详情
-
三剑客功能
grep : 过滤文本
sed : 修改文本(sed是linux中,流媒体编辑器)
awk : 处理文本
-
sed命令的格式
sed [参数] '处理规则' [操作对象]
-
参数详情
序号 | 功能 | 参数 |
---|---|---|
1 | 允许多项编辑 | -e |
2 | 取消默认输出 | -n |
3 | 就地编辑 | -i |
4 | 支持拓展正则 | -r |
5 | 指定sed匹配规则脚本文件 | -f |
- 定位
序号 | 方法名称 | 作用 | 写法 |
---|---|---|---|
1 | 数字定位法 | 指定行号 | sed '3d' 4.txt sed '2,3d' 4.txt |
2 | 正则定位法 | 指定正则定位 | sed '/^g/d' 2.txt |
3 | 数字和正则定位法 | - | sed '3,/^g/d' 2.txt |
4 | 正则正则定位法 | - | sed '/g/,/j/d' 2.txt |
- sed的编辑模式
序号 | 功能 | 符号 | 案例 |
---|---|---|---|
1 | 删除 | d | sed '3d' 4.txt |
2 | 打印 | p | sed '3p' 4.ptxt |
3 | 在当前行后添加一行和多行 | a | sed '2axxx' 4.txt |
4 | 用新文本修改(替换)当前行 | c | sed '2cxxx' 4.txt |
5 | 在当前行之前插入文本 | i | sed '2ixxx' 4.txt |
6 | 在文件中读取命令执行 | r | sed '2r r.txt' 2.txt |
7 | 将读取的文件内容写入当前行 | w | sed '2w w.txt' 2.txt |
8 | 将字符转换成另一个字符 | y | sed '2y/fa/FA/' 2.txt |
9 | 将字符串转换成另一个字符串,每行只替换一次 | s | sed 's/11/22/' 6.txt |
10 | 全部执行 | g | sed 's/11/22/g' 6.txt |
11 | 忽略大小写,跟 s 模式一起使用时 | i | - |
12 | 代表前面匹配到的内容 | & | - |
- 案例
1、将nginx.conf中的注释行全部去掉
[root@localhost ~]# sed '/^ *#/d' /etc/nginx/nginx.conf
2、将nginx.conf中每一行之前增加注释
[root@localhost ~]# sed 's/.*/# &/g' /etc/nginx/nginx.conf
3、要求一键修改本机的ip,
192.168.15.100 ---> 192.168.15.101
172.16.1.100 ---> 172.16.1.101
sed -i 's#.100#.101#g' /etc/sysconfig/network-scripts/ifcfg-eth[01]
4、将/etc/passwd中的root修改成ROOT
sed -i 's#root#ROOT#g' /etc/passwd