我有一个文本文件,例如
Data1 AppFlows
Data2 AppFlows-1
如果我做
grep '\bAppFlows\b' file
它打印了这两行,这意味着我们似乎没有考虑-
边界
我环顾四周,发现了类似的东西
grep -w 'AppFlows$' file
但这并没有帮助。
任何打印具有精确字符匹配的行且输出如下的方法
Data1 AppFlows
答案1
问题是,这-w
意味着“仅选择那些包含形成整个单词的匹配的行”。在您的情况下, the-
确实被视为单词边界,这意味着AppFlows-1
containsAppFlows
就像“整个单词”一样AppFlows foo
。现在,你的方法$
失败了,因为 后面有空格AppFlows
,所以你可以用 GNU 尝试这个grep
:
$ grep -wP 'AppFlows\w*$' file
Data1 AppFlows
当它作为一个完整的单词出现时,它将匹配AppFlows
后跟 0 个或多个空白字符,直到行尾。
另一种方法是查找第二个字段恰好为 的行AppFlows
:
$ awk '$2=="AppFlows"' file
Data1 AppFlows
或者,如果您事先不知道它将是哪个字段,请使用:
$ awk '{ k=0;for(i=1;i<=NF;i++){ if($i=="AppFlows"){k++}}}k' file
Data1 AppFlows
答案2
我做了类似的事情
egrep "(^|[^-])\AppFlows\b([^-]|$)"
对于任何偶然发现这一点的人