我有包含单词“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