GNU/Linux >> Znalost Linux >  >> Linux

Porovnání dvou netříděných seznamů v linuxu, seznam jedinečných v druhém souboru

Musíte použít comm :

comm -13 first.txt second.txt

udělá práci.

ps. na pořadí prvního a druhého souboru v příkazovém řádku záleží.

také možná budete muset seřadit soubory před:

comm -13 <(sort first.txt) <(sort second.txt)

v případě, že jsou soubory číselné, přidejte -n možnost sort .


To by mělo fungovat

comm -13 <(sort file1) <(sort file2)

Zdá se, že sort -n (numerický) nemůže fungovat s comm, který používá řazení (alfanumerický) interně

f1.txt

1
2
21
50

f2.txt

1
3
21
50

21 by se mělo objevit ve třetím sloupci

#WRONG
$ comm <(sort -n f1.txt) <(sort -n f2.txt)   
                1
2
21
        3
        21
                50

#OK
$ comm <(sort f1.txt) <(sort f2.txt)
                1
2
                21
        3
                50

cat f1.txt f2.txt | sort |uniq > file3

grep -Fxv -f first-file.txt second-file.txt

V podstatě hledá všechny řádky v second-file.txt které neodpovídají žádnému řádku v first-file.txt . Pokud jsou soubory velké, může to být pomalé.

Také, jakmile seřadíte soubory (Použijte sort -n pokud jsou číselné), pak comm mělo také fungovat. Jakou chybu to dává? Zkuste toto:

comm -23 second-file-sorted.txt first-file-sorted.txt

Linux
  1. Třídit příkaz v Linuxu s příklady

  2. Jaký je účel souboru .bashrc v Linuxu

  3. Linux shell třídit soubor podle druhého sloupce?

  1. Zkopírujte soubory v terminálu Linux

  2. jak použít linuxový příkaz Sort k seřazení textového souboru podle 4. sloupce, číselného pořadí?

  3. Jaké je výchozí pořadí řazení Linuxu?

  1. Přejmenujte soubor v terminálu Linux

  2. Přesunout soubory v terminálu Linux

  3. Linux – Jak lze zkontrolovat informace o struktuře adresářů souboru Unix/linux?