sed是非交互式的编辑器,它不会修改文件,除非利用shell重定向,如果需要修改原文件,可使用-i选项
sed工作流程:sed将正在处理的行存在一个临时缓冲区中,然后处理,处理结束后将其发送到屏幕上,并将其在临时缓冲区中删除掉,再读取下一行,全部读取完后sed退出。可以看出sed是对副本进行编辑,所以并不会修改原文件。
可以利用nl显示行号,方便进行操作
1.d 删除
: nl filename | sed 'n1d' 删除第n1行
而 sed -i 'n1d' filename 则表示删除原文件的第n1行
2.a表示在行后加上字符串,i则表示在行前加上。
nl filename | sed '2a string'
nl filename | sed '2i string'
nl filename | sed '2i string\string'表示加入了两行字符串,\n表示换行符
3.c为替换内容选项
nl filename | sed '2,5c lu ben wei niu bi'
将第2行至第五行替换成xxx牛逼
4.p列出选择的行内容
nl filename | sed '5,7p' 则会重复打印5~7行
而添加了-n参数后,则直接列出5~7行
5.替换字符串
sed 's/被替换字符串/新字符串/g'