Portál AbcLinuxu, 4. května 2025 23:06
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:
podminka { foo=$0 } END { print foo }
awk '$1 ~ /^internet_ssid$/ {ssid=$2} END {print ssid}' < file.confNějak jsem nepochopil, k čemu je tam ten
eval
...
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.