我想要做的是删除特定匹配项之后的所有空行,甚至是匹配项本身。
原始文件:
line 1
random words
[GROUP 1]
example 1
example 2
example 3
[TITLE]
[TITLE 2]
line 2
line 3
[GROUP 2]
random text...
想要的结果:
line 1
random words
[GROUP 1]
example 1
example 2
example 3
[TITLE 2]
line 2
line 3
random text...
简单,但是解决方案;
sed -z 's/\[[^]]*\]\n\n\n*//g' file
-z
-将输入视为一组行,每行以零字节(ASCII'NUL'字符)代替换行符或更复杂的awk解决方案:
awk '/\[.+\]/{ r=$0; rn=NR; c=0; next }rn && NR-rn==++c{
if(NF) { if(NR-ern!=1) print r; rn=0 } else { ern=NR; next }
}1' file
输出:
line 1
random words
[GROUP 1]
example 1
example 2
example 3
[TITLE 2]
line 2
line 3
random text...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句