wyrazenia regularne

0

witam
obrabiam wlasnie plik csv, i doszedlem do takiego momentu i mam blokade, mam dane :

285;
;WB;156;2016-06-30;24;2016-06-30;989;  60,00;

JAN KOWALSKI;DZIA�DOWO, Ulica GEN. J�ZEFA HALLERA 23 m.33;

286;
;WB;156;2016-06-30;100;2016-06-30;  68,00;

JAN KOWALSKI;DZIA�DOWO, Ulica GEN. J�ZEFA HALLERA 23 m.33;

287;
;WB;3149;2016-06-30;12;2016-06-30;25039;  51,00;

JAN KOWALSKI;DZIA�DOWO, Ulica GEN. J�ZEFA HALLERA 23 m.33;

sa tu przedstawione 3 wiersza, ale sa rozbite na kilka linii, jak z nich zrobic jakims wyrazeniem zeby kazdy wiersz wygladal tak :

287;;WB;3149;2016-06-30;12;2016-06-30;25039;51,00;JAN KOWALSKI;DZIA�DOWO, HALLERA 23 m.33;
287;;WB;3149;2016-06-30;12;2016-06-30;25039;51,00;JAN KOWALSKI;DZIA�DOWO, HALLERA 23 m.33;

?

chcialbym zamienic znak konca linii np na srednik i zlaczyc wiersze, ale to zlaczy mi
wszystkie w calym pliku...
dzieki za podpowiedzi ;]

0

Po co chcesz to robić? Jaki język

0

potrzebuje to wkleic potem do calca i posortowac i wydrukowac..
do dyspozycji mam linuxa, wyr regularne, nie wiem co tam wiecej ;)

2
 
cat data | grep -v "^[' ']*$" | perl -e '$i=0;while(<>){chomp($_);if($_ =~ /^\d+;/){print "\n$_"}else{;print $_;}}'
0

Wariad: cos nie za bardzo to pokazuje wynik, tak wychodzi:

JAN KOWALSKI;DZIA�DOWO, Ulica NORWIDA 7 ;
JAN KOWALSKI;WARSZAWA 48;10-15; 40,00;
JAN KOWALSKI;WARSAWA, Ulica KSIʯODWORSKA 24;

1

U mnie wygląda to tak:

$ cat data
285;
;WB;156;2016-06-30;24;2016-06-30;989;  60,00;
 
JAN KOWALSKI;DZIA�DOWO, Ulica GEN. J�ZEFA HALLERA 23 m.33;
 
286;
;WB;156;2016-06-30;100;2016-06-30;  68,00;
 
JAN KOWALSKI;DZIA�DOWO, Ulica GEN. J�ZEFA HALLERA 23 m.33;
 
287;
;WB;3149;2016-06-30;12;2016-06-30;25039;  51,00;
      
JAN KOWALSKI;DZIA�DOWO, Ulica GEN. J�ZEFA HALLERA 23 m.33;

$ cat data | grep -v "^[' ']*$" | perl -e 'while(<>){chomp($_);if($_ =~ /^\d+;/){print "\n$_"}else{print $_;}}'

285;;WB;156;2016-06-30;24;2016-06-30;989;  60,00;JAN KOWALSKI;DZIA�DOWO, Ulica GEN. J�ZEFA HALLERA 23 m.33;
286;;WB;156;2016-06-30;100;2016-06-30;  68,00;JAN KOWALSKI;DZIA�DOWO, Ulica GEN. J�ZEFA HALLERA 23 m.33;
287;;WB;3149;2016-06-30;12;2016-06-30;25039;  51,00;JAN KOWALSKI;DZIA�DOWO, Ulica GEN. J�ZEFA HALLERA 23 m.33;
 

Wrzuć gdzieś przykładowy plik, bo tak na copy/paste ze strony to może być ciężko.

0

jest ok, dzieki :)
widze ze trzeba bedzie zaczac ogarniac perla :D
a jeszcze jedno, jak to wkleic w csv zeby sie wpasowalo w kolumny/wiersze ? jak wklejam i rozdzielam separatorem to
wyglada tragicznie

1
$ cat TEST.csv | grep -v "^[[:space:]]*$" | perl -e '$i=0;while(<>){if($i==0){if($_ =~ /^\s*(\d+);\r\n/){print "$1;";$i++;}}elsif($i>=1){$_ =~ /(.*)\r\n/;print $1;if($i==2){print "\r\n";$i=0;}else{$i++;}}}'
1;";;;;;WB;;;197;;;2013-10-15;;148;;;;2013-10-15;;;;;;;;;  48,00;;"JAN KOWALSKI;;;;;;;;;;;WARSZAWA ZACNA 12 M5;;;;;;;;;;;;;;
2;";;;;;WB;;;197;;;2013-10-15;;311;;;;2013-10-15;;;;;;;;;  40,00;;"JAN KOWALSKI;;;;;;;;;;;NAPIWOD 8;;;;;;;;;;;;;;
3;";;;;;WB;;;221;;;2013-11-12;;390;;;;2013-11-12;;;;;;;;;  16,00;;""JAN KOWALSKI;;;;;;;;;;;DZIA?DOWO, Ulica KSI?ODWORSKA 24;;;;;;;;;;;;;;"
4;";;;;;WB;;;223;;;2013-11-14;;235;;;;2013-11-14;;;;;;;;;  30,00;;"JAN KOWALSKI;;;;;;;;;;;NAPIWODA 48;;;;;;;;;;;;;;
5;";;;;;DZ;;;900401;;;2013-12-09;;1;;;;2013-12-09;;;;;;;;;  76,50;;""JAN KOWALSKI;;;;;;;;;;;I?OWO-OSADA, UL WARSZAWSKA m.9;;;;;;;;;;;;;;"
 

Trochę inna wersja, możliwe że jest to związane z końcem wiersza. Spróbuj powyższy przykład, jest tam zakończenie linii : print "\r\n".

0

kurde niby jak to przekieruje do pliku txt to jest ok, ale jak wrzuce do csv - bo zalezy mi zeby to miec w arkuszu to sie wywala calkiem ;/

1
$ cat data | grep -v "^[[:space:]]*$" | perl -e '$i=0;while(<>){if($i==0){if($_ =~ /^\s*(\d+);\n/){print "$1;";$i++;}}elsif($i>=1){$_ =~ /\s*(.*)\n/;print $1;if($i==2){print "\r\n";$i=0;}else{$i++;}}}' | column -s\; -t
285  WB  156   2016-06-30  24   2016-06-30  989        60,00       JAN KOWALSKI                                  DZIA�DOWO, Ulica GEN. J�ZEFA HALLERA 23 m.33  
286  WB  156   2016-06-30  100  2016-06-30    68,00  JAN KOWALSKI  DZIA�DOWO, Ulica GEN. J�ZEFA HALLERA 23 m.33  
287  WB  3149  2016-06-30  12   2016-06-30  25039      51,00       JAN KOWALSKI                                  DZIA�DOWO, Ulica GEN. J�ZEFA HALLERA 23 m.33
 

druga kolumna jest niepoprawna, brakuje jednej danej. Zmieniłem wyrażenie $_ =~ /\s*(.*)\n/. Musisz dopasować to do swoich potrzeb.

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