mam dwa pliki tekstowe, które zawierają unikalną posortowaną listę słów:bash: porównanie wierszy z dwóch plików
Plik 1:
a
b
c
d
Plik 2:
b
c
muszę nowy plik zawierający tylko linie obce w pliku 1, więc wynik będzie
a
d
mam dwa pliki tekstowe, które zawierają unikalną posortowaną listę słów:bash: porównanie wierszy z dwóch plików
Plik 1:
a
b
c
d
Plik 2:
b
c
muszę nowy plik zawierający tylko linie obce w pliku 1, więc wynik będzie
a
d
To co comm
jest dla:
komunikator - wybrać lub odrzucić linie wspólne dla obu plików
Chcesz
comm -23 "File 1" "File 2"
które będą tłumić wyjście linie tylko w pliku 2 i linii w obu plikach, pozostawiając jedynie linie w pliku 1. więcej odpowiedzi here on Greg Wooledge's wiki
To jest właściwe narzędzie do tej pracy; to jest dokładnie to, do czego został zaprojektowany. –
Można użyć grep
:
grep -f file1.txt -vFx file2.txt
Wskazówka korzystanie z flagami F, --fixed-strings
i x, --line-regexp
, aby wymusić porównania mają być wykonane biorąc pod uwagę całą linię.
Dziękujemy s, działa to również: 'sort file1.txt file2.txt file2.txt | uniq -u' –
Spróbuj
$ join file1.txt file2.txt -v 1
$ man join
-a FILENUM
print unpairable lines coming from file FILENUM, where FILENUM is 1 or 2, corresponding to FILE1 or FILE2
-v FILENUM
like -a FILENUM, but suppress joined output lines
możliwe duplikat: http: // stackoverflow .com/questions/4078933/find-difference-between-two-text-files-with-one-item-per-line –