我正在尝试使用grep查找整个字符串。我熟悉-w标志,但它给我带来了困难,因为它将点作为分隔符。
例如,我有一个名为“a.txt”的文件和一个目录在某个目录中命名,这就是:
> ls | grep -w a
a
a.txt
我希望它找到的只是“a”,就是这样。
我该怎么做?
答案 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;'