2017-05-23 2 views
0

私は、それらのどこかにリテラル文字列を持つすべての行の違いを無視するためにLinuxのdiff文を書こうとしています。それは正しい方向への一歩ですので、(私の場合は、URLの違いを持つ行を無視します。)文字列の正規表現リテラルを比較比較から探して除外するにはどうすればよいですか?

現在、私は

diff -I '^insert.*' file1.txt file2.txt > outputDiff.txt 

を試みたここでの出力は、挿入を開始する行を取り出し、 長い文字列リテラル(URL)を削除する必要があります。期間とスラッシュがたくさんあります。

正確には:私が持っている行を探しする必要があります。その中の

ta.com/nmo/nmdr/templates/nmdr.css\ 

どこか、とのdiff結果から除外します。

diff -Iステートメント内で動作する正規表現を持つリテラル文字列を検索するにはどうすればよいですか? (もしdiff文に必要ならば、行頭と行末を含めてください)

答えて

0

.\を正規表現でエスケープする必要があります。 1つのコマンドで

diff -I 'ta\.com/nmo/nmdr/templates/nmdr\.css\\' file1.txt file2.txt > outputDiff.txxdt 
0

diff -I 'ta\.com/nmo/nmdr/templates/nmdr\.css\\' file1.txt file2.txt \ 
    > outputDiff.txt 

これは、(通常は「任意の文字」を意味)特別.文字をエスケープし、また文字通りのバックスラッシュを処理しています。

または、連鎖コマンドで(わずかに少ない効率的に)それを行うことができます:

diff file1.txt file2.txt | fgrep -v 'ta.com/nmo/nmdr/templates/nmdr.css\\' \ 
    > outputDiff.txt 

fgrep、または同等grep -F、「速いのgrep」の略で、自動的に.

などの特殊文字をエスケープ
関連する問題