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'