我有以下 grep
grep "/abc/[A-Z]" file1.txt | cut -d/ f3 | sort -u
grep 完美地返回结果,
ALPHA
abc
BRAVO
CHARLIE
但是,为什么输出abc
也在其中呢?我已将正则表达式设置为仅在分隔符反斜杠之后采用大写单词。这是预期的输出吗?我应该如何abc
从输出中删除它?
答案1
您尚未锚定与 一起使用的正则表达式grep
。这样做的结果是它可能匹配线上的任何地方。
一行说,例如,
blah/blah/abc/Abc
或者
/blah/abc/Abc
将与您的表达式匹配,并且两者都将包含字符串abc
作为第三个/
分隔字段。
要将表达式锚定到行的开头,请使用
^/abc/[A-Z]
或者,以其他方式强制执行更严格的匹配,或者使用最适合您的风格和应用程序的方法清除abc
最后的结果。grep -v -F -x abc