欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

sed常用经典案例 博客分类: linux script sed多行模式上一行下一行

程序员文章站 2024-03-14 22:35:23
...

在做原文件操作前,我们先把匹配的行打印出来 p表示打印  n表示只输出匹配

sed -n  '/xxx/p'

  

 

sed 删除引号中的内容

sed -i 's/srcset=\"[^"]*//g'

 

sed 删除某一段内容,示例中删除 class=g的整个div

sed '/<div class="g"/,/<\/div>/d' 

 

sed 删除指定匹配的两行 之间用分号隔开

sed -i '/Original URL/d;/Date Downloaded/d' 

 

sed 段匹配

sed -n '/<ul>/{:loop;N;/<\/ul>/!bloop;N;p}' index.html

 

sed 删除匹配行上多行 下多行 , 主要是删除匹配行上面的行,核心思想是维护一个多行的窗口,超过这个窗口的删除最老的那个。/11/,+2d 表示 删除匹配11的行 以及匹配行下面两行,

:loop 设置标记

1,3!{P;N;D} 除了第一行到第三行,其他行都执行P;N;D操作(P 打印当前模式空间的第一行;N 将下一行添加到当前模式空间中;D 删除模式空间的第一行并开始一个新的循环)

N 这个命令只对第一行到第三行有效了,因为其他行在上一个命令中都执行了D,直接开始新的循环了,所以这个命令不会被执行。
bgo 返回go标签
sed  '/11/,+2d;:loop;1,3!{P;$!N;D};N;bloop'