例如,这是我的名为Weapons
的文件:
Sword of Dragons
Staff of Fire
Bow of Noxious
Staff of Light
Bow of Noxious
我想输入一个只显示包含Bow
一次的行的命令。
以下是我的尝试:
grep -n "Bow" Weapons
但它只显示包含Bow
的所有行。如何仅显示包含Bow
一行的行?
答案 0 :(得分:3)
您可以在Bow
中使用awk
作为字段分隔符,如果这导致一行中有2个字段,则只需打印:
awk -F"Bow" 'NF==2' file
如果您希望它不依赖于案例,请使用IGNORECASE=1
。
要匹配确切的字词(例如Bow
而不是bowtie
),您可以使用GNU awk,感谢Ed Morton的建议,<
{ {1}}锚点表示单词的限制(如>
在其他语言中):
\b
awk -F'\\<Bow\\>' 'BEGIN {IGNORECASE=1} NF==2' a
答案 1 :(得分:2)
您可以在sort命令中使用build in选项:
sort -u file | grep -i bow
或者如果你坚持使用独特的
sort file | uniq | grep -i bow