Spesso ho bisogno di confrontare due file, ignorando certe modifiche all'interno di quei file. Non voglio ignorare intere righe, solo una parte di esse. Il caso più comune di questo è il timestamp sulle linee, ma ci sono anche una dozzina di altri pattern che devo ignorare.diff ignorando i pattern all'interno di una linea, ma non l'intera riga
File1:
[2012-01-02] Some random text foo
[2012-01-02] More output here
File2:
[1999-01-01] Some random text bar
[1999-01-01] More output here
In questo esempio, voglio vedere la differenza sulla linea numero 1, ma non sulla linea numero 2.
Utilizzando diff di L'opzione -I non funziona perché ignora l'intera linea. Uscita ideale:
--- file1 2013-04-05 13:39:46.000000000 -0500
+++ file2 2013-04-05 13:39:56.000000000 -0500
@@ -1,2 +1,2 @@
-[2012-01-02] Some random text foo
+[1999-01-01] Some random text bar
[2012-01-02] More output here
posso pre-processo di questi file con sed:
sed -e's/^\[....-..-..\]//' <file1> file1.tmp
sed -e's/^\[....-..-..\]//' <file2> file2.tmp
diff -u file1.tmp file2.tmp
ma poi ho bisogno di mettere i file temporanei da qualche parte, e ricordarsi di pulirli dopo. Inoltre, il mio output diff non si riferisce più ai nomi file originali e non emette più le righe originali.
Esiste una variante ampiamente disponibile di diff o uno strumento simile, che può farlo come un singolo comando?
Penso che le date possano essere incluse con qualcosa come "--label =" file1 $ (stat --printf "% y" file1) "". Sembra che questo sia il più vicino che riuscirò a ottenere, a meno che non vada a modificare le fonti di diffutils. – Eric