grep を使用して文字列全体を検索しようとしています。-w フラグは使い慣れていますが、ドットを区切り文字として参照するので苦労します。
たとえば、「a.txt」という名前のファイルと、あるディレクトリに a という名前のディレクトリがあると、次のようになります。
> ls | grep -w a
a
a.txt
私が見つけたいのは「a」だけで、それだけです。
どうやってやるの?
a
ライン上にシングルが必要な場合は、使用します
grep '^a$'
区切り文字として空白のみを使用する場合は、使用します
grep '\([[:space:]]\|^\)a\([[:space:]]\|$\)'
(つまり、空白または行頭、a、空白または行末)。
より簡単なアプローチも次のようになります。
grep '^[[:space:]]*a[[:space:]]*$'
変数をより使いやすくするには、awk を使用します。入力パターンを正規表現として解釈しません。
awk -v v="$var" '{ sub(/^[[:space:]]*/, ""); sub(/[[:space:]]*$/, ""); }; $0 == v;'