Non sono sicuro diff
da solo può farlo, ma puoi sempre usare la potenza di altre utilità GNU per aiutarti.
diff -u diffa.txt diffb.txt | grep '^-[^-]' | sed 's/^-//'
Esegue il diff, quindi seleziona solo le righe che iniziano con '-' - quelle vengono modificate e hanno valori dal file diffa.txt, quindi sed
basta rimuovere quei segni '-'.
Modifica: Dopo alcuni esperimenti con diff
, sembra che il comando seguente produca ciò che desideri:
diff --changed-group-format='%<' --unchanged-group-format='' diffa.txt diffb.txt
Un metodo più semplice è usare comm
utilità linux (richiede un file ordinato per l'input). Scrive sullo standard output:
-
righe univoche per diffa.txt
-
righe univoche per diffb.txt
-
linee comuni
e puoi sopprimere ognuno di essi con il parametro 1,2 o 3 di conseguenza. Quindi nel tuo caso sarà simile a questo :
comm -23 diffa.txt diffb.txt
Sopprime le righe univoche per diffb.txt, le righe comuni e stampa le righe univoche solo per diffa.txt
Fonte da: https://www.tutorialspoint.com/unix_commands/comm.htm
Vorrei menzionare quel comm
si aspetta file di input ordinati e quindi riporta risultati diversi rispetto a diff
.
diff --changed-group-format='%<' --unchanged-group-format='' diffa.txt diffb.txt
è universale. Complimenti a @vava