Portál AbcLinuxu, 12. května 2025 06:40
Mam takyto riadok:
2011/02/11 09:00 LZIB 110900Z VRB02KT 2700 -RA BR SCT007 BKN044 OVC048 00/M01 Q1015 88710795 NOSIG
Potrbujem ho rozdelit na polozky v bashi, robim to takto:
P1=`echo $RIADOK | awk '{ print $1 }'` P2=`echo $RIADOK | awk '{ print $2 }'` P3=`echo $RIADOK | awk '{ print $3 }'` P4=`echo $RIADOK | awk '{ print $4 }'` P5=`echo $RIADOK | awk '{ print $5 }'` P6=`echo $RIADOK | awk '{ print $6 }'` P7=`echo $RIADOK | awk '{ print $7 }'` P8=`echo $RIADOK | awk '{ print $8 }'` P9=`echo $RIADOK | awk '{ print $9 }'`
Funguje to, ale neda sa to urobit nejak krajsie?
Řešení dotazu:
$ RADEK='2011/02/11 09:00 LZIB 110900Z VRB02KT 2700 -RA BR SCT007 BKN044 OVC048 00/M01 Q1015 88710795 NOSIG' $ RA=($RADEK) $ echo ${RA[2]} LZIB $
Dobry den.
osobne casto pouzivam konstrukci:
regexp='([^ ]+) ([^ ]+) ([^ ]+) ([^ ]+)'; if [[ "a b c d e f" =~ $regexp ]] ; then echo "+++${BASH_REMATCH[1]}+++${BASH_REMATCH[2]}+++${BASH_REMATCH[3]}+++${BASH_REMATCH[4]}+++${BASH_REMATCH[5]}+++"; fi
Marek
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.