Чтобы ответить на ваш вопрос: я бы использовал awk.Однако, вероятно, я бы использовал python и одно регулярное выражение для захвата всех параметров в словаре.
Бонус: я выполнил упражнение, что вы хотите в bash, используя gnu grep (регулярное выражениепотребность может отличаться, поскольку вывод iwconfig зависит от устройства):
SLEEP=10 # time to sleep between samples
while true; do # or launch it as a cron task
TIMESTAMP=$(date +'%s')
IW=$(iwconfig wlan0)
# capture each parameter in a variable
IEEE=$(echo "$IW" | grep -oP '(?<=IEEE ).[^\s]*')
ESSID=$(echo "$IW" | grep -oP '(?<=ESSID:).[^\s]*')
BITRATE=$(echo "$IW" | grep -oP '(?<=Bit Rate=)\d+\s.[^\s]+(?=[\s]+Tx)')
TXPOWER=$(echo "$IW" | grep -oP '(?<=Tx-Power=)\d+\s.*')
RLL=$(echo "$IW" | grep -oP '(?<=limit:)\d')
RTSTHR=$(echo "$IW" | grep -oP '(?<=RTS thr:).+(?=[ ]+Fra)')
FRAGTHR=$(echo "$IW" | grep -oP '(?<=Fragment thr:).+')
TXPOWER=$(echo "$IW" | grep -oP '(?<=Tx-Power=)\d+ .*')
PM=$(echo "$IW" | grep -oP '(?<=Management:).*')
LQ=$(echo "$IW" | grep -oP '(?<=Quality=)\d+/\d+')
SIGLEV=$(echo "$IW" | grep -oP '(?<=level=).*')
RXNWID=$(echo "$IW" | grep -oP '(?<=nwid:)\d+')
RXCRYPT=$(echo "$IW" | grep -oP '(?<=crypt:)\d+')
RXFRAG=$(echo "$IW" | grep -oP '(?<=frag:)\d+')
RTERET=$(echo "$IW" | grep -oP '(?<=retries:)\d+')
RTIMISC=$(echo "$IW" | grep -oP '(?<=misc:)\d+')
RTMBEAC=$(echo "$IW" | grep -oP '(?<=beacon:)\d+')
#line
echo $TIMESTAMP,$BITRATE,$LQ,$SIGLEV,$RTMBEAC,...
sleep $SLEEP
done
Пример вывода:
1331848207,54 Mb/s,70/70,-37 dBm ,0,...
1331848217,54 Mb/s,70/70,-35 dBm ,0,...
1331848227,54 Mb/s,70/70,-34 dBm ,0,...
1331848237,54 Mb/s,70/70,-39 dBm ,0,...
1331848247,54 Mb/s,70/70,-35 dBm ,0,...
1331848257,54 Mb/s,70/70,-37 dBm ,0,...