本文介绍了如果上一行不包含特定字符串,则为一行中的字符串进行grep的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在文件中包含以下几行:

I have the following lines in a file:

abcdef ghi jkl
uvw xyz

如果前一行不包含字符串"jkl",我想对字符串"xyz"进行grep.

I want to grep for the string "xyz" if the previous line is not contains the string "jkl".

如果该行不包含使用-v选项的特定字符串,我知道如何grep输入字符串.但是我不知道如何用不同的线条来做到这一点.

I know how to grep for a string if the line doesn't contains a specific string using -v option. But i don't know how to do this with different lines.

推荐答案

grep实际上是一种面向行的工具.也许可以用它来实现您想要的,但是使用Awk会更容易:

grep is really a line-oriented tool. It might be possible to achieve what you want with it, but it's easier to use Awk:

awk '
  /xyz/ && !skip { print }
                 { skip = /jkl/ }
' file

阅读为:每行都要做

  • 如果当前行与xyz相匹配并且我们还没有看到jkl,请打印它;
  • 设置变量skip来表明我们是否刚刚看过jkl.
  • if the current line matches xyz and we haven't just seen jkl, print it;
  • set the variable skip to indicate whether we've just seen jkl.

这篇关于如果上一行不包含特定字符串,则为一行中的字符串进行grep的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-05 10:12