我得到了一个文件,其中的文本分为11或10行(每个块由一个新行分隔)。我只想提取11行块。是否有sed命令允许我指定11种模式(每一行都是这样),并且只有在完全匹配的情况下才打印它们(整个块)?
干杯
发布于 2015-08-20 01:23:58
我知道您要求sed,但是GNU awk使这个任务变得很容易:
awk -F'\n' -v RS= 'NF==11' file-v RS=告诉awk使用空行作为记录分隔符。
在awk中,每个记录被划分为字段。-F'\n'告诉awk使用换行符作为字段分隔符。
NF==11告诉awk只有在记录由11行组成时才打印记录。
发布于 2015-08-20 06:53:19
这可能对您有用(GNU sed):
sed -nr ':a;N;$G;s/\n+$//;Ta;s/[^\n]+/&/11p' file使用-n类grep选项和-r扩展regexp选项。
将行追加到模式空间,直到出现空行为止。如果模式空间包含11 (或更多)行,则打印它。
注意:在边缘情况下,最后一行可能是空的,也可能不是空的,请添加换行符。
仅适用于11行:
sed -nr ':a;N;$G;s/\n+$//;Ta;/^([^\n]+\n){10}[^\n]+$/p' filehttps://stackoverflow.com/questions/32107776
复制相似问题