大佬教程收集整理的这篇文章主要介绍了删除图案之间的空白行,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我希望使用sed或awk删除文件中的空白行(新行,制表符和空格),但只有@L_696_2@两行之间有空行时才可以。
lorem lorem PATTERN1 t PATTERN2 lorem2 lorem2`
我期望下面的结果是两行与两个模式的连接。
lorem lorem PATTERN1PATTERN2 lorem2 lorem2
AWK删除空白行
一行的最大值与NA – unix
使用awk sed命令和while循环从第二个文件中删除条目
AWK根据两个条件删除重复的行
如何在awk中input一个系统(“pwd”)的文本?
如何使用AWK打印最高号码的行?
置换列不重复
以最小的顺序列出文件
这可能适用于你(GNU sed):
sed -r '/PATTERN1/!b;:a;/PATTERN2/bb;$!{N;ba};:b;s/(PATTERN1.*)[ tn]+(.*PATTERn2)/12/;tb' file
/PATTERN1/!b只是打印行,除非它包含第一个模式
:a;/PATTERN2/bb;$!{N;ba}将后续行读入模式空间(PS),直到遇到第二个模式
:b;s/(PATTERN1.*)[ tn]+(.*PATTERn2)/;tb替换第一个和第二个模式之间的所有空格,制表符和换行符。
@ WilliamPursell的perl脚本的GNU awk等价物:
awk -v RS='' '{print gensub(/(PATTERN1).*(PATTERn2)/,"\1\2","g")}' file
如果只想删除包含PATTERN1和PATTERN2的行之间只包含空格的行,只需执行:
sed '/PATTERN1/,/PATTERN2/{ /^[ t]*$/D}'
在你给出的示例输出中,看起来你也想要消除PATTERN1之后的换行符,但是不清楚你想如何处理输入:
PATTERN1 non-empty-line PATTERN2
也不想如何处理
PATTERN1 non-whitesapce PATTERN2
也许需要澄清这个问题。 如果你真的只是想消除pattern1和pattern2之间的所有空白,可能是最简单的:
perl -0777 -pe 's/(pattern1)s*(pattern2)/$1$2/g'
@ user537723:你可以试试awk:
—改进了以前的帖子,所以它在模式间打印一行—
awk '/PATTERN1/{ORS=x} /PATTERN2/{ORS=RS} ORS || NF' file
以上是大佬教程为你收集整理的删除图案之间的空白行全部内容,希望文章能够帮你解决删除图案之间的空白行所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。