awk:不显示匹配的正则表达式(多行)

时间:2013-10-27 07:11:45

标签: regex linux awk

我想使用一个正则表达式来查找文本中的所有行,除了我用Regex传递的行。我在这里找到了一个有用的代码enter link description here awk '/.*test.*/{f=1}f;/end/{f=0}' myFile。我想反过来使用它。

我的意思是我不想看到测试结束之间的界限,但我希望看到其他行。

我想在 Linux 环境中执行此操作。

我如何否定这些AWK

3 个答案:

答案 0 :(得分:1)

要查看firstend之间的所有行,包括:

awk '/first/,/end/'

反转:

awk '/first/,/end/{next}1'

(稍微更可读的是,对于第二个示例:awk '/first/,/end/{next}{print}'。上面的版本取决于awk的默认操作{print}; 1相当于true。)< / p>

答案 1 :(得分:0)

有些人喜欢这个

awk '/test/ {f=1} !f; /end/ {f=0}' file

它会打印所有行,直到找到test,然后在找到end后再次开始打印。

答案 2 :(得分:0)

sed更适合这个:

sed '/first/,/end/d'

将删除与模式first匹配的行之间的所有行,直到匹配模式end的第一行。