我使用以下命令匹配文件中的以下行:
cat file.txt | grep -A 1 'match' > output.txt
这使我可以在“匹配”后获得该线路。可在以下文件中找到:
match
random text line 1
match
match
match
random text line 2
match
random text line 3
match
match
random text line 4
match
random text line 5
match
random text line 6
match
random text line 7
match
random text line 8
match
match
random text line 9
但是,我需要在连续两次或更多次匹配后才返回这些行。线。在这种情况下,输出将是:
random text line 2
random text line 4
random text line 9
我尝试过使用grep -A 2 'match' | grep -A 1 'match'
的组合,但它不会起作用,因为它是多余的。我只是在有两条连续的线路时才会遇到如何匹配。如果效率更高,我也可以使用awk或sed进行匹配。任何方向都将不胜感激。
答案 0 :(得分:2)
grep代表g/re/p
,即全局查找正则表达式并打印结果,全部。这不是你想要做的所有,因此grep将是尝试使用的错误工具。对于通用文本操作,使用的标准工具是awk:
$ awk '/match/{c++;next} c>1; {c=0}' file
random text line 2
random text line 4
random text line 9