gpt4 book ai didi

linux - 仅打印一次包含字符串的行

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:51:58 25 4
gpt4 key购买 nike

例如,这是我的名为 Weapons 的文件:

Sword of Dragons
Staff of Fire
Bow of Noxious
Staff of Light
Bow of Noxious

我想输入一个命令,它只显示一次包含 Bow 的行。

这是我尝试过的:

grep -n "Bow" Weapons

但它只显示所有包含 Bow 的行。如何只显示一次包含 Bow 的行?

最佳答案

您可以使用 Bow作为 awk 中的字段分隔符如果这导致一行中有 2 个字段,则打印:

awk -F"Bow" 'NF==2' file

并使用 IGNORECASE=1如果您不希望它不区分大小写。

要匹配确切的单词(例如 Bow 但不是 bowtie),您可以使用 GNU awk,感谢 Ed Morton 的建议,< > anchor 以指示单词的限制(如其他语言中的 \b):

awk -F'\\<Bow\\>' 'BEGIN {IGNORECASE=1} NF==2' a

测试

$ cat a
Sword of Dragons
Staff of Fire
Bow of Noxious
Staff of Light
Bow I like Bow
this is a bow
and this a bowtie
$ awk -F"Bow" 'NF==2' a
Bow of Noxious
$ awk -F"Bow" 'BEGIN {IGNORECASE=1} NF==2' a
Bow of Noxious
this is a bow
and this a bowtie
$ awk -F'\\<Bow\\>' 'BEGIN {IGNORECASE=1} NF==2' a
Bow of Noxious
this is a bow

关于linux - 仅打印一次包含字符串的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28768022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com