Wyświetlenie wierszy z jednego pliku, jeśli te nie występują w drugim pliku

2018-11-09 13:47
Nowy
0

Cześć,

Mam problem z komendą w bashu.

bash\bash.exe -c "comm <(sort -u plik1.txt) <(sort -u plik2.txt)>wynik.txt"

Komenda powinna zwracać wiersze tylko z plik2.txt które nie występują w plik1.txt. Niestety nie chce się wykonać (besh.exe się uruchamia, ale plik wynik.txt nie jest updatowany) i nie wiem w któym miejscu jest błąd.

Taka komenda działa, ale daje błędny wynik

bash\bash.exe -c "plik1.txt plik2.txt>wynik.txt"

Czy ma ktoś pomysł jak w którym miejscu w składni jest błąd?

edytowany 1x, ostatnio: furious programming, 2018-11-09 15:38

Pozostało 580 znaków

2018-11-09 14:08
0

Może tak:

bash\bash.exe -c "comm -13 plik1.txt plik2.txt | sort -u >wynik.txt"

-13 zgodnie z dokumentacją dla comm:

 -1              suppress column 1 (lines unique to FILE1)
 -2              suppress column 2 (lines unique to FILE2)
 -3              suppress column 3 (lines that appear in both files)

Pozostało 580 znaków

2018-11-09 14:21
Nowy
0

Dzięki za szybki odzew. Pomogło o tyle, że plik wynik.txt od odpaleniu kodu się aktualizuje, ale zwraca pusty wynik;

plik1.txt

aaa
bbb
ccc
ddd

plik2.txt

ddd
eee
fff

Powinno zwrócić

eee
fff

Niestety, wynik jest pusty

Pozostało 580 znaków

2018-11-09 14:31
0

To może tak?

bash\bash.exe -c "comm -13 plik1.txt plik2.txt | sort -u ">wynik.txt

Nie korzystam z basha pod windowsem, więc nie wiem w czym może być problem. Jak nie zadziała, to sprawdź czy bez przekierowania zwraca różnicę:

bash\bash.exe -c "comm -13 plik1.txt plik2.txt | sort -u "

Pozostało 580 znaków

2018-11-09 14:57
Nowy
0

Niestety pierwszy wciąż nic. Pierwszy nie zwraca roznicy a drugi się uruchamia, i kończy pracę

Pozostało 580 znaków

2018-11-09 15:15
0

A dane wejściowe masz poprawne? Bo u mnie działa ;-)

[[email protected] ~]$ cat p1
Linia1
Linia2
LiniaX
LiniaY
[[email protected] ~]$ cat p2
Linia1
Linia2
LiniaQ
LiniaQ
LiniaQ
[[email protected] ~]$ comm -13 p1 p2 | sort -u
LiniaQ
[[email protected] ~]$ 

Pozostało 580 znaków

Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0