sed

作者: HelloWorld_26 | 来源:发表于2018-06-21 17:20 被阅读0次

\(..\)匹配子串,保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers。

替换文本中的字符串:

sed 's/book/books/' file

直接编辑文件选项-i,会匹配file文件中每一行的第一个book替换为books:

sed -i's/book/books/g’ file

使用后缀 /g 标记会替换每一行中的所有匹配:

sed 's/book/books/g’ file

当需要从第N处匹配开始替换时,可以使用 /Ng:

echo sksksksksksk | sed 's/sk/SK/2g'

skSKSKSKSKSK

echo sksksksksksk | sed 's/sk/SK/3g'

skskSKSKSKSK

echo sksksksksksk | sed 's/sk/SK/4g'

skskskSKSKSK

定界符出现在样式内部时,需要进行转义:

sed 's/\/bin/\/usr\/local\/bin/g’

删除空白行:

sed '/^$/d’ file

删除文件的第2行:

sed '2d’ file

删除文件的第2行到末尾所有行:

sed '2,$d’ file

删除文件最后一行:

sed '$d’ file

删除文件中所有开头是test的行:

sed '/^test/'dfile

love被标记为1,所有loveable会被替换成lovers,并打印出来:

sed -n 's/\(love\)able/\1rs/p’ file

打印从第5行开始到第一个包含以test开始的行之间的所有行:

sed -n '5,/^test/p’ file

将 this is a test line 追加到 以test 开头的行后面:

sed '/^test/a\this is a test line’ file

将 this is a test line 追加到以test开头的行前面:

sed '/^test/i\this is a test line’ file

在 test.conf 文件第2行之后插入 this is a test line:

sed -i '2a\this is a test line’ test.conf

互换模式空间和保持缓冲区的内容。也就是把包含test与check的行互换:

sed -e '/test/h' -e '/check/x’ file

-e选项允许在同一行里执行多条命令:

sed-e'1,5d'-e's/test/check/‘ file

上面sed表达式的第一条命令删除1至5行,第二条命令用check替换test。命令的执行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令的结果。

相关文章

网友评论

      本文标题:sed

      本文链接:https://www.haomeiwen.com/subject/hpkzeftx.html