Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Jak można porównać pliki tekstowe w ten sposób, aby nie były porównywane dokładnie linia po linii
tylko powiedzmy że zawierają te same linie ale w różnej kolejności plus jeden plik zawiera jeszcze inne dodatkowe
a wynikiem porównania będą właśnie te dodatkowe
przykładem może być tu porównanie wyników poleceń:
dpkg -l
z różnych systemów przy czym w wyniku chciałbym otrzymać listę pakietów różniących oba systemy
Offline
man sort man diff
Nie wiem w czym problem.
Jeszcze ewentualnie man uniq, jeśli chcesz usunąć duplikaty linii (ale chyba nie można mieć danego pakietu zainstalowanego kilkukrotnie?).
Ostatnio edytowany przez Minio (2010-04-05 21:09:01)
Offline
tak na szybko - może się roić od błędów ;]
#!/bin/bash LISTA_1=$1 #aktualny system LISTA_2=$2 #z ktorym porownujesz for i in `cat $LISTA_2` do if ! [ `grep $i $LISTA_1 ] then echo "$i not installed" fi done for i in `cat $LISTA_1` do if ! [ `grep $i $LISTA_2 ] then echo "$i not installed" fi done
listy do porównania powinny wygladać tak:
dpkg -l |awk '{print $2}' > plik
Zamiast wypisywać na ektan można zrobić plik z listą paczke ;)
Można to pewnie zrobić zdecydowania przyjemniej ale nie mam weny na wymyślanie :P
Ostatnio edytowany przez winnetou (2010-04-05 21:22:49)
Offline
grep -v -f plik1 plik2 grep -v -f plik2 plik1
Offline
o właśnie azhag podał cywilizowane rozwiązanie :)
Offline