Compare dos files e imprima líneas sin igual

Tengo dos files con los datos a continuación; Necesito la diferencia entre dos files.

Intenté con diff pero también muestra líneas que son comunes en los dos files: (22372 Dec 4 15:36 /opt/apache-tomcat-6.0.36/webapps/new/new.txt) .

Primer file: (existen múltiples datos de la misma manera en el file 1)

 22677 Dec 4 15:36 /opt/apache-tomcat-6.0.36/webapps/new/abc.txt 22372 Dec 4 15:36 /opt/apache-tomcat-6.0.36/webapps/new/new.txt 

Segundo file: (existen múltiples datos de la misma manera en el file 2).

 22372 Dec 4 15:36 /opt/apache-tomcat-6.0.36/webapps/new/new.txt 22677 Dec 3 15:36 /opt/apache-tomcat-6.0.36/webapps/new/abc.txt 12344 Dec 10 15:36 /opt/apache-tomcat-6.0.36/webapps/abc/.../test.txt 

Necesito el siguiente resultado:

 22677 Dec 3 15:36 /opt/apache-tomcat-6.0.36/webapps/new/abc.txt 12344 Dec 10 15:36 /opt/apache-tomcat-6.0.36/webapps/abc/.../test.txt 

Esto parece una oportunidad perfecta para usar comm.

 $ comm -1 -3 <(sort file1) <(sort file2) 12344 Dec 10 15:36 /opt/apache-tomcat-6.0.36/webapps/abc/.../test.txt 22677 Dec 3 15:36 /opt/apache-tomcat-6.0.36/webapps/new/abc.txt 

-1 y -3 elimina todas las líneas exclusivas del file 1 y todas las líneas comunes a ambos.

Debido a la sorting, cambiará el order de la salida, pero eso no parece ser una consideración basada en la pregunta.

Si la input ya está orderada, puede omitir los giros que producen

 $ comm -1 -3 file1 file2 

Utilice diff -u file1 file2 | sed -nr 's/^+([^+].*)/\1/p' diff -u file1 file2 | sed -nr 's/^+([^+].*)/\1/p'

Salida:

22677 3 de diciembre 15:36 /opt/apache-tomcat-6.0.36/webapps/new/abc.txt
12344 10 de diciembre 15:36 /opt/apache-tomcat-6.0.36/webapps/abc/…/test.txt

Si necesita la línea en blanco entre ellos, use
diff -u file1 file2 | sed -nr 's/^+([^+].*)/\1\n/p'

Salida:

22677 3 de diciembre 15:36 /opt/apache-tomcat-6.0.36/webapps/new/abc.txt

12344 10 de diciembre 15:36 /opt/apache-tomcat-6.0.36/webapps/abc/…/test.txt