linux - 从 bash 输出中排除一个字符串

标签 linux bash

我现在正在做一个项目。在这个项目中,由于某些原因,我需要从匹配模式的输出(或文件)中排除第一个字符串。困难在于我只需要排除一个字符串,即流中的第一个字符串。 例如,如果我有:

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/

相关文章:

regex - 按字符在字符类中的位置对 grep 匹配项进行排序

您能否编译一个共享对象以优先使用本地符号,即使它是由使用 -rdynamic 编译的程序加载的?

c - memcpy - 从不同大小的整数转换为指针

bash shell 脚本 sleep 或 cronjob 哪个更好?

bash - 使用 os.system 正确处理从 Python 转义的 shell

c - 为什么我在获取时间戳时得到负值?

linux - 本地主机在Docker容器中是什么意思?

bash - 在 bash complete 中指定两个文件扩展名

bash - shell脚本中的FTP不起作用

bash - 如何在 Bash 中跳出循环?