Mam dwa pliki, a format plików to zmienna = wartość lub zmienna # lub #. Wartości wszystkich zmiennych są albo nieustawione; tak; mod Chcę skopiować wszystkie wpisy z tych plików do innego pliku i zachować tylko unikalne wpisy. W przypadku, gdy oba pliki mają tę samą zmienną, ale mają różne wartości. Chciałbym skopiować te z = mod. Jak to osiągnąć za pomocą skryptu awk, sed, grep lub bash?
Zwykle robię to ręcznie, łącząc pliki i kopiując wynik w programie Excel. W programie Excel korzystam z funkcji usuwania duplikatów w programie Excel, a następnie ręcznie usuwam wpisy zgodnie z powyższymi wymaganiami.
#
?Odpowiedzi:
Zbuduj program w dowolnym języku, do którego jesteś najbardziej przyzwyczajony. Logika:
Spowoduje to porównanie każdej linii pliku1 z każdą linią pliku2 (zamiast porównywania linii do linii).
źródło
Spróbuj użyć tego
awk
skryptu:Nazwij to tak:
źródło
Perl jedna wkładka
plik pierwszy:
1
2
3
plik drugi:
1
4
3
Drukuj tylko unikalną linię
perl -lne 'print if ++$n{ $_ } == 1 ' file_one.txt file_two.txt
Lub
perl -lne 'print unless ++$n{ $_ } ' file_one.txt file_two.txt
wyjście
1
4
3
2
źródło