使用grep查找整个字符串

时间:2013-08-17 09:04:19

标签: bash scripting grep flags

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

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

> ls | grep -w a
a
a.txt

我希望它找到的只是“a”,就是这样。

我该怎么做?

3 个答案:

答案 0 :(得分:2)

如果您想要一行a,请使用

grep '^a$'

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

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

(即行的空格或开头,a,空格或行的结尾)。

答案 1 :(得分:2)

使用grep

的x选项
 ls | grep -x a

答案 2 :(得分:1)

更简单的方法是:

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

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

awk -v v="$var" '{ sub(/^[[:space:]]*/, ""); sub(/[[:space:]]*$/, ""); }; $0 == v;'