一,替换文本
s/pattern/replacement/flags
replacement会替换pattern
例如:
[root@node1 sed]# cat data2.txt
This is a test of the test script.
This is the second test of the test script.
[root@node1 sed]# sed "s/test/demo/" data2.txt
This is a demo of the test script.
This is the second demo of the test script.
flag:
数字 可选择替换第几个
g 替换所有
p 要打印修改行的内容
w file 将输出结果写入到文件中
[root@node1 sed]# sed "s/test/demo/2" data2.txt 数字2是指替换第二个
This is a test of the demo script.
This is the second test of the demo script.[root@node1 sed]# sed 's/test/trial/w test' data2.txt
This is a trial of the test script.
This is the second trial of the test script.
[root@node1 sed]# cat test
This is a trial of the test script.
This is the second trial of the test script.
也可以替换掉字符不使用/,使用其他符号也是可以的,以防止冲突使用
二,使用地址
数字形式显示区间
如果我只想修改第2行的dog
sed '2s/dog/cat' data1.txt
sed '2,4s/dog/cat/' data1.txt 修改2-4行
sed '2,$s/dog/cat/' data1.txt 修改第2行到尾行
文本模式过滤出行
sed -n '/redhat/s/bash/csh/p' /etc/passwd 匹配redhat的行 并修改
三.删除行
sed '3d' data4.txt
也可以模式匹配 进行删除。找到3然后删除
四.插入和附加文本
插入是命令i 会在指定行前面增加新行
附加是命令a 会在指定行后面增加一个新行
五.修改行
修改change/c命令
.
也可以使用模式匹配
六。转换命令
转换transform / y
sed 'y/1234/abcd/' data4.txt
这个转换会将所有匹配到的 全部进行转换 使用的时候要注意,而且是一一对应的,两个长度不一样也是语法错误
七。一些其他的指令
-f 处理输入时,将file中制定的命令添加到已有的命令中
-n 不产生命令输出,只能使用print命令来完成输出
-e 处理输入的时候,将命令添加到已有的命令中
= 显示行号 sed '=' file
list / l 列出行