我正在尝试使用 grep 查找整个字符串。我熟悉 -w 标志,但它让我很难过,因为它将点作为分隔符。
例如,我在某个目录中有一个名为“a.txt”的文件和一个名为 a 的目录,这就是发生的情况:
> ls | grep -w a
a
a.txt
我希望它找到的只是“a”,仅此而已。
我怎样才能做到这一点?
如果你想要一个单行a
,请使用
grep '^a$'
如果您只将空格作为分隔符,请使用
grep '\([[:space:]]\|^\)a\([[:space:]]\|$\)'
(即空格或行首,a,空格或行尾)。
使用 grep 的 x optin
ls | grep -x a
一个更简单的方法也是:
grep '^[[:space:]]*a[[:space:]]*$'
对变量更友好的是使用 awk。它不会将输入模式解释为正则表达式。
awk -v v="$var" '{ sub(/^[[:space:]]*/, ""); sub(/[[:space:]]*$/, ""); }; $0 == v;'