diffの出力ファイルから行を削除します。

diffの出力ファイルから行を削除します。

diff -c出力を使用してテキストファイルに保存するスクリプトがあります。私が望むのは、「!」のない行を削除し、感嘆符付きの行を表示することです。可能ですか?このcutコマンドで問題は解決しますか?

diff -cディレクトリ1からディレクトリ2にファイルを分割するので、これを使いたいです。

例:

*** 1,3 ****
! 3856715355 /home/dir
  4294967277 /home/dir/file1 <---remove this line
! 154272340 /home/dir/file5
--- 1,4 ----
! 1765342654 /home/dir
  4294967277 /home/dir/file1 <--- remove this line
! 803775803 /home/dir/file4
! 2580902204 /home/dir/file99

答え1

  • そしてgrep

    diff -c file1 file2 | grep '^[-!*]'`
    
  • そしてsed

    diff -c file1 file2 | sed '/^[-!*]/!d'
    

答え2

grepを使用してください:

diff -c file1 file2 | grep -v '^  '

2つのスペースで始まる他の行はありません。で始まる行!やlineディレクティブではありません。

関連情報