GNU/Linux >> Linux Esercitazione >  >> Linux

Elenca le righe di un solo file in DIFF

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


Linux
  1. Sostituire le righe che corrispondono a un motivo con le righe di un altro file in ordine?

  2. Copiare le ultime N righe da un file all'altro?

  3. Contare le righe in un file?

  4. Disegna a caso un certo numero di righe da un file di dati?

  5. Come rimuovo le nuove righe da un file di testo?

Come unire più righe in una in un file in Linux

Come rimuovere le righe da un file usando il comando Sed

Awk da linee diverse?

Lettura di righe da un file con Bash:per vs. Mentre?

Rimuovi le righe pari o dispari da un file di testo

Disegna casualmente un certo numero di righe da un file di dati