sed

来源:互联网 发布:p2p网络摄像机如何远程 编辑:程序博客网 时间:2024/06/16 09:49

    sed不改变原文本;

    sed不管是否找到指定模式,它的退出状态都是0,


 [Aa] 匹配[]中的字符或者数字

$ 最后字符、最后行,sed '3,$d' test.txt删除第三行到最后一行的所有内容,只显示头两行内容

& 在查找串中匹配到的内容,sed 's/[0-9][0-9]$/&.5/' test.txt 结尾以两位数的行后面都加上.5

\(..)\../\1 ,如sed -n 's/\(Mar\)got/\1ianne/p' test.txt包括在圆括号里的模式Mar作为标签1保存于特定的寄存器中。替代串可通过\1引用它。则Margot被替换为Marianne

/west/,/east/p 打印west与east单词之间的所有行

5,/^northeast/p 打印从第5行到第一个以northeast开头的行之间的所有行

/west/,/east/s/$/**VACA**/ 修改从模式east和west之间的所有行,将各行的行尾($)替换成字符串**VACA**。替行符被一道这个新的字符串的后面


sed 's#3#88#g' test.txt 在此中#就是/一样的效果,紧跟在s命令后的字符就是查找串和替代串之间的分隔符。分隔符默认是正斜杆,但可以改变。无论什么字符(换行符、反斜杠除外),只要紧跟着s命令,就成为了新的串分隔符。


a\ 命令是追加命令,追加将添加新文本到文件中当前行(即读入模式缓冲区中的行)的后面。所追加的文本行位于sed命令的下方另起一行。如果要追加的内容超过一行,则每一行都必须以反斜线结束,最后一行除外。最后一行将以引号和文件名结束。

  例如:sed '/my/a

        >you\

        >are' test.txt # 存在my字符的行后增加you和are两行内容

 c 修改,完整修改在模式缓冲区的当前行,如果模式匹配c命令将用反斜杠后的文本替换包含的行

  d 删除,例如:sed "1,3d" test.txt 删除文件1到3行

  -e  用于进行多重编辑。如:sed -e '1,3d' -e 's/Hemenway/Jones' test.txt

  g 替换每一行上所有的匹配项

  G 最后一行

  h 匹配暂存到缓存区,sed -e '/123/h' -e '$G' newfile拥有123的行内容,放到最后行;sed -e '/123/{h; d;}' -e '/X/{g;}' newfil缓存123这一行但不打印这一行内容,拥有X字符的行用123行内容替代

  i 当前行之前插入

  n 获取下一行的信息,如:sed '/123/{n;s/45/78/;}' newfile 查找123字符的下一行,在下一行中并且用78代替45

  -n 取消自动打印模式空间,不加-n那么sed会打印出查找结果的行两次,例如:sed -n "/my/p" test.txt,-n也是只打印匹配的行

  p 为打印出整个文本,匹配的行打印两次

  q  退出,sed '3q' newfile打印3行后退出

  r  读命令,sed使用该命令将一个文本文件中的内容加到当前文件的特定位置上。如:sed '/Suan/r newfile' datafile,即在Suan下一行开始插入newfile内容

  s s/my/you/g   s表示替换my成you,g表示替换每一行上所有的匹配项,如果没有加g只替换每一行的第一个匹配字段,例如:sed "s/my/you/g" test.txt

  w  写命令,将当前文件中的一些行写到文件,如:sed -n '/north/w newfile' test.txt文件中test.txt中所有包含模式north的行都被写到文件newfile中

  x  互换,sed -e '/123/h' -e '/456/x' newfile 表示456行与123行内容互换,缓存区中保存456行的内容

  y  字符一对一的转换,如:sed '1,3y/123/980/' newfile第一至三行中的1转为9,2转为8,3转为0

0 0