2

我正在尝试使用 grep 查找整个字符串。我熟悉 -w 标志,但它让我很难过,因为它将点作为分隔符。

例如,我在某个目录中有一个名为“a.txt”的文件和一个名为 a 的目录,这就是发生的情况:

> ls | grep -w a
a
a.txt

我希望它找到的只是“a”,仅此而已。

我怎样才能做到这一点?

4

3 回答 3

2

如果你想要一个单行a,请使用

grep '^a$'

如果您只将空格作为分隔符,请使用

grep '\([[:space:]]\|^\)a\([[:space:]]\|$\)'

(即空格或行首,a,空格或行尾)。

于 2013-08-17T09:09:59.500 回答
2

使用 grep 的 x optin

 ls | grep -x a
于 2013-08-18T07:44:58.947 回答
1

一个更简单的方法也是:

grep '^[[:space:]]*a[[:space:]]*$'

对变量更友好的是使用 awk。它不会将输入模式解释为正则表达式。

awk -v v="$var" '{ sub(/^[[:space:]]*/, ""); sub(/[[:space:]]*$/, ""); }; $0 == v;'
于 2013-08-17T10:23:09.827 回答