eliminar líneas de un file de salida de diff

Tengo un script que usa diff -c luego coloca el resultado en un file de text. Lo que quiero es eliminar la línea que no tiene el "!" y mostrar las líneas con el signo de exclamación. es posible? ¿Puede el command de cut hacer el truco?

Quería usar diff -c porque separa los files del directory1 al directory2.

ejemplo:

 *** 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 

  • con grep :

     diff -c file1 file2 | grep '^[-!*]'` 
  • con sed :

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

Con grep:

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

ninguna de las otras líneas comienza con dos espacios: ¡no con los que comienzan ! , y no las indicaciones de línea.