巨大なデータベースダンプ内で検索と置換を実行しようとしていますが、発生するはずのことを実行していません。ファイル内のターゲット文字列をgrepしてから、周囲の8文字程度を確認したいと思います(状況によっては、その数を調整する必要がある場合があります)。どうやってやるの?
私が目を見張ることができない理由は、何千とは言わないまでも何百ものマッチがあるからです。文字列を囲むいくつかの文字を取得し、それをuniq
または何かにパイプして、検索と置換で予期しない動作が発生する理由を確認します。
また、同じ行に複数の一致がある可能性があります!
grep
を使用する大雑把な方法は、次のようになります。
grep -o "....yourtext...." /path/to/the/dump.sql
ドットの数は、greppedテキストの前後の文字数に対応します。 -o
オプションは、grep
に、行全体ではなく、一致するものだけを出力させます。
出力でuniq
を使用するには、最初に出力をソートする必要があることに注意してください。だから、通常、あなたはします
grep . . . | sort | uniq
各試合のヒット数に興味がある場合は、を使用してニースの出力を取得できます
grep . . . | sort | uniq -c | sort -n
@rozcietrzewiaczの回答から始めて、私はに拡張することができます
pattern="string"
num=8
grep -on ".\{0,$num\}$pattern.\{0,$num\}" input-file