Skocz do zawartości

Plik .csv W Bashu..


Franz

Rekomendowane odpowiedzi

Witam !

 

Mam nastepujacy problem. Mam dwa pliki tekstowe w formacie .csv (dane - adresy IP,MAC,Nazwy kart sieciowych itp.. znajduja sie w kolejnych wierszach i sa oddzielone przecinkami).

 

np. plik1 : IP1,IP2,MAC1,MAC2,...

plik2: IP3,IP4,MAC3,MAC4,...

 

Jak najprosciej porownujac te pliki spowodowac zeby dana pobrana np. z 4-go miejsca po przecinku z pliku2 trafila na to samo miejsce w pliku1 ? Innymi slowy jak nadpisac pole w pliku1 ta nowa dana tego samego typu wyciagnieta z pliku 2, bez zmiany pozostalych danych ?

 

Z gory bardzo dziekuje za jakakolwiek pomoc !

Odnośnik do komentarza
Udostępnij na innych stronach

Jeżeli koniecznie bash, to użyj cut i paste. Ale sensowniej jest takie rzeczy robić w awk-u, perlu lub pythonie. Mniej kombinowania.

Np. w Perlu odręcznie sklecony szkic może wyglądać tak:

#!/usr/bin/perl
$f1 = open(plik1, "plik1");
$f2 = open(plik2, "plik2");
@dane1 = <plik1>;
@dane2 = <plik2>;
$n = @dane1;
for ($i=0; $i<$n; $i++) {
    @w1 = split(",",@dane1[$i]);
    @w2 = split(",",@dane2[$i]);
    print "@w1[0],@w2[1],@w1[2]";
}
close(plik1);
close(plik2);

Przy czym profesjonalnie napisany program będzie krótszy, szybszy i mniej czytelny.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...