質問: 特定のパターンに一致するテキストをファイルから削除する方法 2つのファイルを比較して、fileaとfilebの違いを確認したいと思います。 fileaはテンプレートファイルのようなもので、filebは私が比較したいファイルです。違いを見つけたら、その違いをfilecに出力したいと思います。難しいのは、fileaとfilebに、常に異なるデータ(時刻、日付、ランダムに生成されたidコード)を持つ特定の(すべてではない)行が含まれていることです。ただし、時間、日付、idコードのみが異なるfilecに行を出力したくありません。したがって、私がやりたいのは、filebで発生する行から時刻、日付、およびidコードを削除し(これはfileaで手動で実行できます)、filebと比較して、異なる行をfilecに出力することです。削除するテキストは常に特定のパターンに従うことに注意してください。したがって、これらのパターンでgrepを使用してテキストを見つけることはできますが、削除する方法がわかりません...これが私が何を意味するかを示すための2つのファイルの例です: fileb qaqa rara abc 10:12:25 08/20/2014 123456 def ghi fff ddd jkl 09:20:40 08/20/2014 978645 dfdf gggg filea qaqa rara abc 10:32:15 07/15/2014 121456 xxx ghi eee ddd jkl 10:01:22 07/15/2014 971645 dfdf gggg 時刻(例:10:12:25)、日付(例:2014年8月20日)、idコード(例:123456)を無視して、上記の2つのファイルの違いを見つけ、filecに出力したいしたがって、異なる2行は2行目と3行目です。1行目は両方のファイルで同じです。 4行目は、時刻、日付、id情報が削除されている場合、両方のファイルで同じです。
回答: 結果を得る最も簡単なコマンドは以下のとおりです $ diff <(tr -s "[0-9]、:、/" "" <filea)<(tr -s "[0-9]、:、/" "" <fileb) コマンドは非常に単純で、複雑な正規表現もありません。サンプル出力は以下のようになります2,3c2,3 < abc xxx < ghi eee ddd --- > abc def > ghi fff ddd これがあなたが望むものであることを願っています。