简介
sed是非交互式的编辑器。它不会修改文件,除非使用shell重定向来保存结果。默认情况下,sed编辑器逐行处理文件(或输入),并将结果发送到屏幕。
具体过程如下:首先sed把当前正在处理的行保存在一个临时缓存区中(也称为模式空间),然后处理临时缓冲区中的行,完成后把该行发送到屏幕上。sed每处理完一行就将其从临时缓冲区删除,然后将下一行读入,进行处理和显示。处理完输入文件的最后一行后,sed便结束运行。sed把每一行都存在临时缓冲区中,对这个副本进行编辑,所以不会修改原文件。
常用命令:
-
sed -n '3p' datafile
只打印第三行 -
sed -n '5,10p' filename
只查看文件的第5行到第10行 -
sed '2,5d' datafile
删除第2到第5行 -
sed '/My/,/You/d' datafile
删除包含"My"的行到包含"You"的行之间的行 -
sed '/My/,10d' datafile
删除包含"My"的行到第十行的内容 -
sed -e '1,10d' -e 's/My/Your/g' datafile
-e是编辑命令,用于sed执行多个编辑任务的情况下。在下一行开始编辑前,所有的编辑动作将应用到模式缓冲区中的行上。 选项-e用于进行多重编辑。第一重编辑删除第1-3行。第二重编辑将出现的所有My替换为Your。因为是逐行进行这两项编辑(即这两个命令都在模式空间的当前行上执行),所以编辑命令的顺序会影响结果。 -
sed 's/^My/You/g' datafile
命令末端的g表示在行内进行全局替换,也就是说如果某行出现多个My,所有的My都被替换为You -
sed -n '1,20s/My$/You/gp' datafile
处理1到20行里匹配以My结尾的行,把行内所有的My替换为You,并打印到屏幕上。