GNU/Linux >> Znalost Linux >  >> Linux

Výpis řádků pouze z jednoho souboru v DIFF

Nejsem si jistý diff sám to dokáže, ale vždy můžete využít sílu jiných GNU utilit, aby vám pomohly.

diff -u diffa.txt diffb.txt | grep '^-[^-]' | sed 's/^-//'

Provede rozdíl, pak vybere pouze řádky, které začínají '-' - ty se změní a mají hodnoty ze souboru diffa.txt, pak sed stačí odstranit ty znaky '-'.

Upravit: Po několika experimentech s diff , vypadá to, že níže uvedený příkaz vytváří to, co chcete:

diff --changed-group-format='%<' --unchanged-group-format='' diffa.txt diffb.txt

Jednodušší metodou je použití comm linuxový nástroj (Pro vstup potřebuje seřazený soubor). Zapisuje na standardní výstup:

  • řádky, které jsou jedinečné pro soubor diffa.txt

  • řádky, které jsou jedinečné pro diffb.txt

  • řádky, které jsou běžné

a každý z nich můžete potlačit parametrem 1,2 nebo 3 odpovídajícím způsobem. Takže ve vašem případě to bude vypadat takto :

comm -23 diffa.txt diffb.txt

Potlačí řádky, které jsou jedinečné pro diffb.txt, řádky, které jsou společné, a vytiskne řádky, které jsou jedinečné pouze pro diffa.txt

Zdroj: https://www.tutorialspoint.com/unix_commands/comm.htm


Rád bych zmínil, že comm očekává setříděné vstupní soubory, a proto hlásí jiné výsledky než diff .

diff --changed-group-format='%<' --unchanged-group-format='' diffa.txt diffb.txt

je univerzální. Díky @vava


Linux
  1. Odebrat všechny soubory/adresáře kromě jednoho souboru?

  2. Rozdělit soubor podle počtu řádků včetně záhlaví v každém z nich?

  3. Efektivně odstranit prvních pár řádků z textového souboru?

  1. Kopírovat posledních N řádků z jednoho souboru do druhého?

  2. Jak připojit více řádků k souboru?

  3. Awk z různých řádků?

  1. Čtení řádků ze souboru s Bash:For vs. Zatímco?

  2. Jak odstraním nové řádky z textového souboru?

  3. Odstraňte prvních N řádků z aktivního souboru protokolu