fgrep
ピリオドやその他のメタ文字を含むリテラル単語検索を処理する機能を使用したいが、その単語が行の先頭にあることを確認する必要がありgrep
ます。
たとえば、私が望むものと正確に一致しますが、私が望んでいないものともfgrep 'miss.'
一致します。miss.
admiss.
co. miss.
たとえば、メタ文字をエスケープすることはできますが、grep '^miss\.'
ソースが大きすぎて確かに何かを見逃してからもう一度実行する必要があります(一晩かかります)。たとえば、場合によっては、\1
エスケープコードが「メタセマンティクス」を持つコードです。
この問題を解決する方法はありますか?
ベストアンサー1
GNUの場合は、grep
PCREサポートを使用してビルドし、$string
これが含まれていないと仮定すると、\E
次のことができます。
grep -P "^\Q$string"
perl
とともにrindex
:
perl -sne 'print if rindex($_, $string, 0) == 0' -- -string="$string"
そしてawk
:
S=$string awk 'index($0, ENVIRON["S"]) == 1'