0

次のようなデータを含む非常に大きなテキストファイルがあります。

     but/CC as/IN 1/Z church/NP historian/NN/Fc 
     as/IN 1/Z "/Fe rupture/NN and/CC new/JJ beginning/NN century/NN ./Fp
    ======>match found: \#\#[a-z]+\/NN\#\#
    ======>match found: be\/V[A-Z]+(\s[.]{0,10})?\#\#
    ======>match found: \#\#\sof\/IN

(linux)ターミナルコマンドgrepを使用して、次で始まるすべての行を照合して消去したいと思います。

======>一致が見つかりました:

改行文字で終わります。

したがって、前の例によれば、grepを実行して、次の出力を取得したいと思います。

しかし/CCas / IN 1/Z教会/NP歴史家/NN/ Fc as / IN 1 / Z"/Fe破裂/NNおよび/CC新規/JJ開始/NN世紀/NN。/Fp

よろしくお願いします

4

2 に答える 2

1

Sedはあなたの友達です

sed -i '/^======>match found:/d' largefilename.txt

で始まる行のすべての出現箇所を削除します======>match found:

スイッチは、がstdoutに出力されるのではなく変更されること-iを意味します。これは、grepを使用するよりも効率的であるはずです。largefilename.txt

于 2013-01-23T15:24:09.457 に答える
1
grep -E -v '^======>match found:.+$' file.txt

-E拡張正規表現を-v有効にし、出力を無効にします。つまり、一致しないすべての行を出力します。

于 2013-01-23T15:23:08.187 に答える