我有包含單詞「TEMPO」在每行重複多次的文件。 如實施例:搜索單詞按行重複多次搜索單詞
(TAF HECA 312300Z 0100/0206 32008KT 6000 NSC TEMPO 0100/0107 VRB03KT 4000HZ PROB40 TEMPO 0101/0106 2000BR BECMG 0109/0111 35010KT 9999 SCT025=)
我想搜索(TEMPO)逐個作出如果條件:
如果小時後第一(TEMPO)> =第一6小時停止,並且如果沒有完成閱讀和搜索2日(TEMPO)。我的腳本是:
#!/bin/sh
cat taf2 | while read line
do
ihour1=`echo $line |cut -d "Z" -f2 | awk '{ print substr($0,2,4) }'`
lhour1=`echo $line |cut -d "Z" -f2 | awk '{ print substr($0,7,4) }'`
l6hour1=`expr $ihour1 + 6`
printf -v l6hour1 "%04d" $l6hour1 ; echo $l6hour1
line2=`echo $line | sed "s:Z ${ihour1}/${lhour1}:Z ${ihour1}/${l6hour1}:g"`
#echo $line2
# search for TEMPO
ihour2=`echo $line2 |awk '{for (I=1;I<=NF;I++) if ($I == "TEMPO") {val[++c]=substr($(I+1),1,4);{print $(I+1)};}}'|awk '{print substr($0,1,4)}'`
lhour2=`echo $line2 |awk '{for (I=1;I<=NF;I++) if ($I == "TEMPO") {print $(I+1)};}'|awk '{print substr($0,6,4)}'`
##
count_tempo=`echo $ihour2 |wc -w`
for cc in {1..$count_tempo};do
echo $ihour2 $val[$cc]
if [ $ihour2 -ge $l6hour1 ]; then
fline=`echo $line2 | sed "s: TEMPO.*::g"`
echo no
else
fline=`echo $line2| sed "s:TEMPO ${ihour2}/${lhour2}:TEMPO ${ihour2}/${l6hour1}:g"`
echo yes
fi
echo $fline "=" >>ttt
done
done
####
我想打一個循環在TEMPO的數量,單獨讀第一,然後可以去下與否。 感謝您的幫助。
_if - - 等於某個值stop_停止程序執行完畢或者只是繼續下一行?無需打印任何東西?如果有的話請發佈預期的輸出。 –
即使在檔案的第二行,您是否希望自己的速度條件繼續?或者每行必須被視爲單獨/獨特的情況? –
我希望條件是爲每個單獨的行 – user3625191