【发布时间】:2010-10-11 06:47:21
【问题描述】:
所以我亲爱的 SOers,让我直截了当地说: 规范:使用成对的模式过滤文本文件。 示例:如果我们有一个文件:
line 1 blabla
line 2 more blabla
line 3 **PAT1a** blabla
line 4 blabla
line 5 **PAT1b** blabla
line 6 blabla
line 7 **PAT2a** blabla
line 8 blabla
line 9 **PAT2b** blabla
line 10 **PAT3a** blabla
line 11 blabla
line 12 **PAT3b** blabla
more and more blabla
应该给:
line 3 **PAT1a** blabla
line 4 blabla
line 5 **PAT1b** blabla
line 7 **PAT2a** blabla
line 8 blabla
line 9 **PAT2b** blabla
line 10 **PAT3a** blabla
line 11 blabla
line 12 **PAT3b** blabla
我知道如何使用“sed”只归档其中的一部分: sed -n -e '/PAT1a/,/PAT1b/{p}' 但是如何过滤所有的 sn-ps,我是否需要将这些模式对写入配置文件中,从中读取一对,使用上面的 sed cmd,转到下一对...?
注意:假设 PAT1、PAT2 和 PAT3 等没有公共前缀(如本例中的“PAT”)
还有一件事:如何在这篇文章的配额文本中换行而不留下一个完整的空白行?
【问题讨论】:
-
这是一个实际问题还是“竞争”?如果是后者,将其标记为“社区维基”似乎更合适。至于你的最后一个问题:我通常把文字放在
<pre></pre>块中。 -
要让引用的文本包含换行符,请使用代码格式化按钮,或者如果您使用
>,则每行以两个空格结尾。