fgrep行を開始?

fgrep行を開始?

fgrepピリオドやその他のメタ文字を含むリテラル単語検索を処理する機能を使用したいが、その単語が行の先頭にあることを確認する必要がありgrepます。

たとえば、私が望むものと正確に一致しますが、私が望んでいないものともfgrep 'miss.'一致します。miss.admiss.co. miss.

たとえば、メタ文字をエスケープすることはできますが、grep '^miss\.'ソースが大きすぎて確かに何かを見逃してからもう一度実行する必要があります(一晩かかります)。たとえば、場合によっては、\1エスケープコードが「メタセマンティクス」を持つコードです。

この問題を解決する方法はありますか?

ベストアンサー1

GNUの場合は、grepPCREサポートを使用してビルドし、$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'

おすすめ記事