GNU/Linux >> Znalost Linux >  >> Linux

Jak zobrazit pouze různé řádky pomocí diff (bash)

a.txt:

1;john;125;3
1;tom;56;2
2;jack;10;5

b.txt:

1;john;125;3
1;tom;58;2
2;jack;10;5

Použijte comm:

comm -13 a.txt b.txt 
1;tom;58;2

Možnosti příkazového řádku jsou comm jsou docela přímočaré:

-1 potlačí sloupec 1 (řádky jedinečné pro FILE1)

-2 potlačí sloupec 2 (řádky jedinečné pro SOUBOR2)

-3 potlačí sloupec 3 (řádky, které se objevují v obou souborech)


Zde je jednoduché řešení, které je podle mě lepší než diff :

sort file1 file2 | uniq -u

  • sort file1 file2 zřetězí dva soubory a seřadí je
  • uniq -u vytiskne jedinečné řádky (které se neopakují). Vyžaduje, aby byl vstup předem seřazen.

Pomocí specifikátorů skupinového formátu můžete potlačit tisk nezměněných řádků a vytisknout pouze změněné řádky pro změněné

diff --changed-group-format="%>" --unchanged-group-format="" file1 file2


Za předpokladu, že chcete zachovat pouze řádky jedinečné pro soubor 2, můžete:

comm -13 file1 file2

Všimněte si, že comm příkaz očekává, že dva soubory budou v seřazeném pořadí.


Linux
  1. Jak provést řádkové porovnání souborů v Linuxu pomocí příkazu diff - Část II

  2. Jak provádět řádkové porovnání souborů v Linuxu pomocí příkazu diff

  3. příkaz diff pro získání pouze počtu různých řádků

  1. Jak zapsat celé číslo do binárního souboru pomocí Bash?

  2. Jak získat pouze počet řádků souboru

  3. Jak zkopírovat adresáře do adresáře pomocí instalace v bash?

  1. Jak analyzovat hlavičky HTTP pomocí Bash?

  2. Jak přidat úlohu crontab do crontab pomocí bash skriptu?

  3. Jak vypsat seznam složek pomocí příkazů bash?