Portál AbcLinuxu, 5. května 2024 21:35


Dotaz: vytažení hodnoty proměnné ze souboru

18.6.2015 12:16 MilanC | skóre: 16
vytažení hodnoty proměnné ze souboru
Přečteno: 181×
Odpovědět | Admin

Ahoj, už chvíli stojím na tomhle... Takto si vytahnu hodnotu internet_ssid z konfiguráku...

eval "awk '/^internet_ssid\t+/{"'internet_ssid'"=\"\";sub(\" \",\"\");print $1;exit}' file.conf"

Nyní jsem ale udělal úpravy a potíž je, že v souboru se může stejná hodnota vyskytovat vícekrát (přepisuje se, tj. platí poslední). Potřebuji tedy vracet pouze hodnotu posledního výskytu/řádeku v souboru, když je jich tam víc...

internet_ssid   123
internet_ssid   ASDS
internet_ssid   ZZZZ <- tento chci

Tohle co jsem zkoušel není úplně ono... eval "awk '/^internet_ssid\t+/;END{"'internet_ssid'"=\"\";sub(\" \",\"\");print $1;exit}' file.conf" result:

internet_ssid   KPN_AP
internet_ssid   ASDS
internet_ssid   ZZZZ
internet_ssid   ZZZZ

Alternativně jsem to pořešil:

eval "cat file.conf | grep $1 | tail -1 | awk '/^$1\t+/{"'$1'"=\"\";sub(\" \",\"\");print;exit}'"

ale myslím, že by to mělo jít vyřešit jedním voláním awk. :)

Ukázkový soubor: http://devel.chvalsiny.net/panel.conf Děkuji.


Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

rADOn avatar 18.6.2015 12:38 rADOn | skóre: 44 | blog: bloK | Praha
Rozbalit Rozbalit vše Re: vytažení hodnoty proměnné ze souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
ulozis si to do promenny a tu vypises v ENDu, nejak takhle:
podminka { foo=$0 }
END { print foo }
"2^24 comments ought to be enough for anyone" -- CmdrTaco
18.6.2015 12:39 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: vytažení hodnoty proměnné ze souboru
Co je to "foo"? Myslel jsem, že hledá SSID.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Řešení 1× (Tarmaq)
18.6.2015 12:38 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: vytažení hodnoty proměnné ze souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
awk '$1 ~ /^internet_ssid$/ {ssid=$2} END {print ssid}' < file.conf
Nějak jsem nepochopil, k čemu je tam ten eval...
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.