三剑客简介
-
grep : 过滤文本
-
sed : 修改文本
-
awk : 处理文本
linux三剑客之sed
- sed是Linux中的流媒体编辑器
1. sed 格式
sed [参数] ‘处理规则’ [操作对象]
参数 | 用途 | 用法 |
---|---|---|
-e | 允许多项编辑 | sed -e ‘3d’ -e ‘4d’ 1.txt |
-n | 取消默认输出 | sed -n 1.txt |
-i | 就地编辑(将展示内容写入文件) | sed -i ‘3d’ 1.txt |
-r | 支持拓展正在则(正则表达式放在/ 中间/ (# # ,$ $也可)) | sed -r ‘/123/d’ 1.txt |
-f | 指定sed匹配规则脚本文件(通过文件内容修改文件) | sed -f r.txt 1.txt |
2.sed模式
参数 | 意义 | 用法 |
---|---|---|
d | 删除 | sed ‘3d’ 1.txt |
p | 打印 | sed -n ‘3p’ 1.txt |
a | 在当前行后添加一行或多行 | sed ‘saxxx’ 1.txt |
c | 用新的文本修改(替换)当前行 | sed ‘2cxxx’ 1.txt |
i | 在当前行之前插入文本(单独使用) | sed ‘2ixxx’ 1.txt |
r | 在文件中读内容,写到新文件中 | sed ‘2r r.txt ‘ 1.txt |
w | 将指定行写入新文件文件 | sed ‘2w w.txt’ 1.txt |
y | 将字符装换成另一个字符 | sed ‘2y/fa/FA/’ 2.txt |
s | 将字符串转换成另一个字符串(每一行只替换一处) | sed ‘s/11/22/g’ 1.txt |
g | 全部执行 | sed ‘s/11/22/g’ 1.txt |
i | 忽略大小写(跟 s 模式一起使用) | sed ‘s/F/abc/gi’ 1.txt |
3. 定位
-
数字定位法
指定行号:
sed ‘3d’ 1.txt : 删除第三行
sed ‘2,3d’ 1.txt : 删除第2到第3行
-
正则定位法
sed ‘/g/d’ 1.txt : 删除含g的行
-
数字和正则定位法
sed ‘3,/^g/d’ 1.txt : 删除 从第3行开始到以g开头的行
-
正则正则定位法
sed '/^g/,/^j/d' 1.txt : 删除从以g开头到以j开头的所有行
4. 案例
1. 将nginx.conf 中的注释行全部去掉
sed '/^ *#/d' /etc/nginx/nginx.conf
2. 将nginx.conf中每一行之前增加注释
sed 's/.*/# &/g' /etc/nginx/nginx.conf
注 : & 符号代表之前内容
3. 要求一键修改本机的ip
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