我怎么能这些线条

时间:2010-06-21 13:12:44

标签: regex unix grep

我想要以@开头的行,以及以//开头的行后跟以@开头的行

示例:

//text1
@text2
text3

结果:

//text1
@text2

如何使用grep或任何其他基本的unix工具执行此操作?

1 个答案:

答案 0 :(得分:2)

perl -ne 'print( $z . $_ ) if m{^\@}; $z=(m{^//} ? $_ : "");'

这个单行一次处理STDIN一行。

如果找到以@开头的行,则会转储$z后跟当前行的内容。

然后,如果它检测到以//开头的行,则会将该行保存在变量$z中。如果该行$z开头,则//变量将被清除。

我已经给了这个快速测试,应该完成所要求的工作。

grep工具不记得行之间的状态。