Shell sed 替换操作

来源:互联网 发布:matlab二维数组 编辑:程序博客网 时间:2024/05/01 01:39

语法

     sed   [  -n ]  'editing  command '  [  file .....]

     sed   [  -n ]   -e   'editing  command ' ..... [  file .....]

     sed   [  -n ]  -f   script-file..... [  file .....]

用途

      为了编辑他的输入流,将结果生成到标准输出,而非以交互式编辑器的方式来编辑文件。虽然sed命令很多,能做很复杂的工作,但是它最常用的还是处理输入流的文本替换,通常是作为管道的一部分。

主要选项

       -e  'editing  command'

                  将editing   command使用在输入数据上。当有多个命令需要应用时,就必须使用-e 了

       -f   script-file 

                  自script-file 中读取编辑命令。当有多个命令需要执行时,此选项相当有用。

        -n  

                  不是每个最后已修改结果行都正常打印,而是现实以p指定(处理过的)的行

行为模式

           读取每个输入文件的每一行,假如没有文件的话,则是标准输入。以每一行来说,sed会执行每一个英语到输入行的editing command 。 结果会写到标准输出(默认状态下,或是显示地使用p命令及-n选项)。若无-e 或 -f 选项,则sed会把第一个参数看做是要使用的editing command。


例子:

$ echo  Tolstoy  reads well. Tolstoy writes well. > example.txt      【输入样本】

$ sed 's/Tolstoy/Camus/'  <example.txt                                              【没有设置g】

Camus reads well.Tolstoy writes well.                                              

$ sed 's/Tolstoy/Camus/g'  <example.txt                                            【设置了"g"】

Camus reads well.Camus writes well.   


s/foo/bar/3   【更换第三个foo】

s//quux/        【现在更换第一个】

sed  -n '10,42p'   foo.xml      【仅打印10-42行】

sed  '/foo/,/bar/  s/baz/quux/g'   【仅替换范围内的行】

从含有foo的行开始,再匹配是否有bar 的行,再将匹配后的结果中,有baz的全换成quux (像ed、ex这类的检阅程序,或是vi内的冒号命令提示模式下,都认识此语法)。




0 0