仅当上面一行中的字符串不同时才对内容进行Grep

时间:2016-11-02 18:22:36

标签: unix awk sed grep

我的日志文件中包含以下内容。

abcdefg hijk lmnopq
rstuv wxyz

我尝试编写一个查找 wxyz 的命令,并且只有在前一行不包含字符串 HIJK

我写了一个grep命令,但它没有工作,因为它是一个面向行的命令。看起来我必须使用awk或sed。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

awk救援!

这前后两行,你应该可以改为三......

$ awk       '/hijk/{h=NR} 
  /wxyz/&&NR!=(h+1){print p2 ORS p1; w=3} 
                   {p2=p1;p1=$0} 
             w&&w--' file

也没有处理第一行匹配到wxyz。对于/wxyz/ && (NR!=(h+1) || !h)的更改,需要调整打印p2和p1。