grepでエスケープをしないで検索する
grepで特殊な文字をエスケープしないで検索する
grepでは正規表現で使用する特殊な文字(\、[、]、^、$、*、.など)は、バックスラッシュ(\)を付けて検索する必要があります。1文字ぐらいなら問題ありませんが複数ある場合は手間になります。
この特殊文字をエスケープしないで固定文字して検索する方法を紹介します
「grep -F」で特殊をエスケープしないで検索する
「grep -F 」を使用すると「固定文字列の検索を行う」事ができますので、特殊な文字列をエスケープしないで検索できます
$ cat test.txt abc/def abc\def abc$def abc"def $ grep -F 'c/d' test.txt abc/def $ grep -F 'c\d' test.txt abc\def
但し、「$」の場合は駄目らしく、バックスラッシュ(\)でエクケープする必要があります
$ grep -F "c$d" test.txt abc/def abc\def abc$def abc"def $ grep -F "c\$d" test.txt abc$def
「fgrep 」で特殊をエスケープしないで検索する
「fgrep」も「grep -F 」と同じで、固定長文字列のでの検索をおこないますので、特殊な文字列をエスケープしないで検索できます
$ cat test.txt abc/def abc\def abc$def abc"def $ fgrep 'c/d' test.txt abc/def $ fgrep 'c\d' test.txt abc\def
但し、「$」の場合は駄目らしく、バックスラッシュ(\)でエクケープする必要があります
$ fgrep "c$d" test.txt abc/def abc\def abc$def abc"def $ fgrep "c\$d" test.txt abc$def
ディスカッション
コメント一覧
まだ、コメントがありません