待处理的文件aaa.log内容:
09/26 00:00:08 116.41834259033203 39.90071597768346 116.60888671875 35.38904996691167 502516.707409
09/26 00:01:34 121.13089397549632 30.98941357306606 121.55966117978099 31.149880293437714 44614.8976635
09/26 00:01:51 117.12383329868318 39.243494180634734 117.12383329868318 39.243494180634734 0
09/26 00:03:55 117.12383329868318 39.243494180634734 117.12383329868318 39.243494180634734 0
09/26 00:04:07 106.70314550399783 26.556866721950268 106.72096878290178 26.58711559252519 3806.24567829
09/26 00:05:23 117.12383329868318 39.243494180634734 117.12383329868318 39.243494180634734 0
09/26 00:05:38 114.18694585561754 36.686433818538205 115.66599234938623 37.7350984521996 175556.820747
09/26 00:05:57 121.13089397549632 30.98941357306606 121.55966117978099 31.149880293437714 44614.8976635
处理要求:
最后一列的数值小于50000的行,且之抽取第三列至第六列的内容,保存到另一个文件BBB.txt
shell脚本程序:
#!/bin/bash
echo ' ' > BBB.txt
while read LINE #逐行读取文件“/bak/log/aaalog”
do
distance=$(echo "$LINE"| awk -F '\t' '{print $7}') #將每行的第七列取出赋值给distance, 赋值语法: temp=$(赋值内容) 或者 temp=`赋值内容`, 注意不是单引号或双引号。
#if [[ $distance < 3000 ]]; then
# echo "$LINE"| awk -F '\t' '{print $3,$4,$5,$6}' >> BBB.txt
#fi
[ $distance < 50000 ] && echo "$LINE"| awk -F '\t' '{print $3,$4,$5,$6}' >> BBB.txt #取出第七列小于50000的行且將指定列输出到文件BBB.txt
done < /bak/log/aaalog
#注意:
#条件比较语法: if[比较条件]]; then...要做的事情 fi
#或者:[比较条件] && 要做的事情。