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
rsync kopíruje pouze určité typy souborů pomocí volby include
Linuxové nástroje pro kontrolu Windows DLL