bash parsowanie łańcucha

Bash, C, C++, Java, PHP, Ruby, GTK, Qt i wiele innych - wszystko tutaj.
yanan
Sędziwy Jeż
Sędziwy Jeż
Posty: 39
Rejestracja: 22 lis 2010, 17:08
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: GNOME
Architektura: x86

bash parsowanie łańcucha

Post autor: yanan »

Witam

Mam problem z wyciągnięciem danych z pliku. Mianowicie w pliku mam taki łańcuch:

Kod: Zaznacz cały

+CREG: 2,1,123,AC45
I teraz problem polega na tym, że muszę wyciągnąć z tego wartość 123 np do pliku a.txt oraz AC45 do pliku b.txt

Z przerzuceniem do pliku to bym sobie poradził, ale nie umiem wymyślij wyrażenia regularnego, które by wyłuskało te wartości.

Pozdrawiam
Awatar użytkownika
azhag
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 151
Rejestracja: 24 maja 2010, 19:30
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Fluxbox
Architektura: x86
Kontakt:

Odp: bash parsowanie łańcucha

Post autor: azhag »

Z przerzuceniem do pliku to bym sobie poradził
Zatem jak od razu wrzucić do pliku nie podaję ;)

Kod: Zaznacz cały

 echo "+CREG: 2,1,123,AC45"| awk -F, '{system("echo "$3";  echo "$4)}'
Polski portal Debiana: http://dug.net.pl/
yanan
Sędziwy Jeż
Sędziwy Jeż
Posty: 39
Rejestracja: 22 lis 2010, 17:08
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: GNOME
Architektura: x86

Odp: bash parsowanie łańcucha

Post autor: yanan »

No muszę powiedzieć, że jest problem z drugi parametrem :-o

Kod: Zaznacz cały

awk: line 1: runaway string constant " > paramb.txt ...
tzn. pierwszy się zapisał drugi zaś nie :) coś mu ten " przeszkadza
Awatar użytkownika
azhag
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 151
Rejestracja: 24 maja 2010, 19:30
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Fluxbox
Architektura: x86
Kontakt:

Odp: bash parsowanie łańcucha

Post autor: azhag »

Się rąbnąłem za pierwszym razem, jak czyściłem z zapisywania od razu.

A że widzę że kombinujesz na około:

Kod: Zaznacz cały

echo "+CREG: 2,1,123,AC45"| awk -F, '{system("echo "$3" >/tmp/a.txt;  echo "$4" >/tmp/b.txt")}'
Polski portal Debiana: http://dug.net.pl/
Awatar użytkownika
borzole
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 127
Rejestracja: 10 sie 2010, 11:48
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Odp: bash parsowanie łańcucha

Post autor: borzole »

a właściwie po co używasz "system echo"?

Kod: Zaznacz cały

echo "+CREG: 2,1,123,AC45" | awk -F, '{print $4}'
Awatar użytkownika
Dwimenor
Przebojowy Jelonek
Przebojowy Jelonek
Posty: 1260
Rejestracja: 18 mar 2008, 16:14
Płeć: Mężczyzna
Wersja Ubuntu: 13.10
Architektura: x86_64

Odp: bash parsowanie łańcucha

Post autor: Dwimenor »

Idąć tym tropem, po co używać AWK?

Kod: Zaznacz cały

dwimenor@19:07:24:~$ echo "+CREG: 2,1,123,AC45"|cut -f4 -d","
AC45
dwimenor@19:07:38:~$ echo "+CREG: 2,1,123,AC45"|cut -f3 -d","
123
Poniższe zdanie jest fałszywe.
Powyższe zdanie jest prawdziwe.
Awatar użytkownika
azhag
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 151
Rejestracja: 24 maja 2010, 19:30
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: Fluxbox
Architektura: x86
Kontakt:

Odp: bash parsowanie łańcucha

Post autor: azhag »

borzole pisze:a właściwie po co używasz "system echo"?
aby od razu zapisać do pliku
Dwimenor pisze:Idąć tym tropem, po co używać AWK?
z tego samego powodu
Polski portal Debiana: http://dug.net.pl/
Awatar użytkownika
borzole
Serdeczny Borsuk
Serdeczny Borsuk
Posty: 127
Rejestracja: 10 sie 2010, 11:48
Płeć: Mężczyzna
Wersja Ubuntu: inny OS
Środowisko graficzne: GNOME
Architektura: x86_64
Kontakt:

Odp: bash parsowanie łańcucha

Post autor: borzole »

można też przy użyciu wyłącznie bash

Kod: Zaznacz cały

IFS=$',' read -a x < <(echo "+CREG: 2,1,123,AC45")

echo ${x[2]} > plik1
echo ${x[3]} > plik2
nie trzeba wywoływać zewnętrznych programów
dobra dość :) , yanan chyba już dostał co chciał
yanan
Sędziwy Jeż
Sędziwy Jeż
Posty: 39
Rejestracja: 22 lis 2010, 17:08
Płeć: Mężczyzna
Wersja Ubuntu: 10.10
Środowisko graficzne: GNOME
Architektura: x86

Odp: bash parsowanie łańcucha

Post autor: yanan »

No pewnie, że wystarczy :) Dzięki wielkie.
Nie spodziewałem się aż takiej "kłótni"
ODPOWIEDZ

Wróć do „Programowanie”

Kto jest online

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