[PERL,PYTHON,BASH] Masowe sprawdzanie i operacja na plikach tekstowych

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
troll3
Piegowaty Guziec
Piegowaty Guziec
Posty: 1
Rejestracja: 12 paź 2012, 22:48

[PERL,PYTHON,BASH] Masowe sprawdzanie i operacja na plikach tekstowych

Post autor: troll3 »

Witam.
Potrzebuję coś takiego jakiś skrypt w pythonie, perlu, bashu, obojętnie w czym. Załóżmy, że mam dwa pliki:

Kod: Zaznacz cały

1.txt
2.txt



Przykładowa zawartość pliku 1.txt:

Kod: Zaznacz cały

Nowak:Budowlana1
Kazikowski:Sluga2
Romanowski:Spacerowa3

Przykładowa zawartość pliku 2.txt:

Kod: Zaznacz cały

Budowlana1:6973248883
Sluga2:6078837721
Spacerowa3:837212121
I chodzi mi mianowicie o to, żeby sprawdziło w obu pikach, czy istnieją np.

Kod: Zaznacz cały

Budowlana1
Sluga2
Spacerowa3

A jeśli istnieje w obu to żeby mi pobrało wartość z tego drugiego piku, mianowicie to po średniku.

Kod: Zaznacz cały

6973248883
6078837721
837212121
i ładnie zapisało do nowego pliku np.: 3.txt w formie

Kod: Zaznacz cały

Nowak:6973248883
Kazikowski: 6078837721
Romanowski: 837212121
I tak, żeby mi przerobiło wszystko co jest w w plikach i zapisało. Dodam że w plikach znajduję się setki,tysiące wierszy w takich formatach
Mały 1
Zakręcona Traszka
Zakręcona Traszka
Posty: 548
Rejestracja: 24 sty 2008, 15:55
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: LXDE
Architektura: x86_64

Re: [PERL,PYTHON,BASH] Masowe sprawdzanie i operacja na plikach tekstowych

Post autor: Mały 1 »

Można to zrobić tak:

Kod: Zaznacz cały

$ awk -F ":" '{getline a < "2.txt" split(a, b, ":"); if($2==b[1]) print $1":", b[2]}' 1.txt
Nowak: 6973248883
Kazikowski: 6078837721
Romanowski: 837212121
A tutaj zapisze do nowego pliku o nazwie "zapisane.txt":

Kod: Zaznacz cały

awk -F ":" '{getline a < "2.txt" split(a, b, ":"); if($2==b[1]) print $1":", b[2] > "zapisane.txt" }' 1.txt
Uwaga.
Polecenie napisane jest pod zawartość Twoich wzorcowych plików. Polecenie będzie działać prawidłowo tylko wówczas gdy w jednym i drugim pliku w tej samej linii zawartość porównywanych pól będzie identyczna. Napisz czy o to ci chodziło.
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 11 gości