使用格式:
sed [-nefri] [command] filename
option:
sed -n '1p' filename
显示最后一行($表示最后一行)
sed -n '$p' filename
显示第一行和第三行
sed -n '1p;3p' filename
或者
sed -n -e '1p' -e '3p' filename
那如果要依次显示第三行和第一行呢?
sed -n '3p;1p' filename
是不行的。那咋办呢,我还不知道。
sed -n '1,3p' filename
搜索包含'ipaddr'包含的行
sed -n '/ipaddr/p' filename
在1-4行中搜索包行'ipaddr'字段的行
sed -n '1,4p' filename | sed -n '/ipaddr/p'
把搜索结果导出到新文件newfile
sed -n '1,4p' filename | sed -n '/ipaddr/p' >newfile
在第一行上、下插入一行文本'hello'
sed '1i hello' filename
sed '1a hello' filename
在1-3行后均插入一行文本'hello'
sed '1,3a hello' filename
第一行插入一行'hello'文本,第二行插一行'world'文本
sed -e '1a hello' -e '2a world' filename
-e表示进行多项编辑,即对输入行应用多条sed命令是使用,直接在指令模式上进行sed的动作编辑。
sed '1,3c hello' filename
将第一行替换为'hello'将第二行替换为'world'
sed -e'1c hello' -e '2c world' filename
以行为处理单位,将文本中所有的'option'替换成'hello'
sed 's/option/hello/' filename
将1-5行的'option'替换成’hello',6-7行的'option'替换成'world',这个我还不确定对不对
sed -e '1,5s/option/hello/' -e '6,7s/option/world/' filename
行首的值为'^',行尾的值为'$',可以通过替换的方法在行首行尾添加一些文本
sed -e'1,5s/^/config /' -e '1,5s/option/hello/g' filename
特别注意,在上述替换命令中,只能替换每行的第一个匹配字符,例如
root@OpenWrt:~# cat newfile
abcabc
ab cd
执行
root@OpenWrt:~# sed 's/a/LOVE/' newfile
LOVEbcabc
LOVEb cd
若想替换所有匹配字符则需要在引号内容最后添加'g'
root@OpenWrt:~# sed 's/a/LOVE/g' newfile
LOVEbcLOVEbc
LOVEb cd
如何删除文件中的特定字符串?当然不删除行了。
root@OpenWrt:~# cat newfile
abcabc
ab cd
root@OpenWrt:~# sed 's/ab//' newfile
cabc
cd
root@OpenWrt:~# sed 's/ab//g' newfile
cc
cd