環境変数にスラッシュを含むコンテンツを見つけるには?

環境変数にスラッシュを含むコンテンツを見つけるには?

ファイルをgrepして、特定の環境変数(正確に言えば$PWD)を含むすべての行を取得したいと思います。

もちろん、それを使用してください

cat file | grep '/'$PWD'/'

スラッシュが含まれているため機能しません$PWD

私はこれを正しく実行する方法を見つけようとしていますが、奇妙で過度に複雑な解決策を思いつきました。これを行う簡単な方法はありますか?

答え1

一重引用符の代わりに二重引用符を使用してくださいcatウルムチ大学):

grep -F -- "$PWD" file

-F何も見つからない場合は、検索$PWD文字列ではなく正規表現として扱われることに注意してくださいfile

答え2

スラッシュは特殊文字ではないため、自由に使用できます。

grep "$PWD/" file

後ろに/を追加しても問題は発生しません。しかし、スラッシュはawkとsedの特殊文字です。パターンは//で囲まれています。この場合、以下を使用できます。

awk -v pattern="$PWD/" '$0 ~ pattern' file

awk /pattern/ {action} 構文を使用しないでください。ここで、「〜」は一致演算子で、$ 0は行全体を表します。

関連情報