本文介绍了如果上一行不包含特定字符串,则为一行中的字符串进行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 seenjkl
, print it; - set the variable
skip
to indicate whether we've just seenjkl
.
这篇关于如果上一行不包含特定字符串,则为一行中的字符串进行grep的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!