我现在正在做一个项目。在这个项目中,由于某些原因,我需要从匹配模式的输出(或文件)中排除第一个字符串。困难在于我只需要排除一个字符串,即流中的第一个字符串。 例如,如果我有:
1 abc
2 qwerty
3 open
4 abc
5 talk
在一些脚本工作之后我应该有这个:
2 qwerty
3 open
4 abc
5 talk
注意:我对单词前的数字一无所知,因此我无法使用有关它们的知识来过滤输出。
我用 grep 写了一个小脚本,但它删除了每个与模式匹配的字符串:
'some program' | grep -v "abc"
阅读有关 awk、sed 等的信息,但不明白我是否可以解决我的问题。 任何帮助,谢谢。
最佳答案
使用 awk:
some program | awk '{ if (/abc/ && !seen) { seen = 1 } else print }'
或者,仅使用过滤器:
some program | awk '!/abc/ || seen { print } /abc/ && !seen { seen = 1 }'
关于linux - 从 bash 输出中排除一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38715861/