sed

\(..\)匹配子串,保存匹配的字符,如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。命令的执行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令的结果。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文链接:sed命令_Linux sed 命令用法详解:功能强大的流式文本编辑器 http://man.linu...
    e2ae5d4bd7c1阅读 4,177评论 0 1
  • 行前或行后插入 sed 'p;s/^.*$/--------/' file awk '{print $0;prin...
    不排版阅读 3,567评论 0 0
  • # sed -n '/Dec 28 15:15:00/,$p' filename //查询某段时间到现在的日...
    ssdsss阅读 4,390评论 0 0
  • Sed工具工作原理及特性 1. sed是流编辑器,每一次读取一行到内存中,即称之为模式空间(pattern spa...
    魏镇坪阅读 13,750评论 0 12
  • 本文承接之前写的三十分钟学会AWK一文,在学习完AWK之后,趁热打铁又学习了一下SED,不得不说这两个工具真的堪称...
    mylxsw阅读 9,853评论 3 74