shell中使用awk判断文件中字段的值并进行替换的方法

stime=`date +%s`
#获取当前时间
echo  开始处理文件:  B08101007_${month_id}.txt.gz
#处理文件
zcat B08101007.txt.gz | awk -F '\x01' '{
#压缩文件查看方式使用zcat,分隔符为'\X01'
     if($2 == 822) {n2="V0511300"}
#判断第二个字段值是否是822,如果是替换成V0511300
     else if($2 == 833) {n2="V0511100"}
    else if($2 == 811) {n2="V0513100"}
    else if($2 == 832) {n2="V0511000"}
    else if($2 == 818) {n2="V0510300"}
    else {n2=""}
#其他输出为空
};{print $1"\x01"n2"\x01"$3"\x01"$4"\x01"$5"\x01"$6"\x01"$7"\x01"$8"\x01"$9"\x01"$10"\x01"$11"\x01"$12"\x01"$13"\x01"$14"\x01"$15}'>/mnt/sd03/data/sichuan/trans_area/B08101007.txt.new
#根据获取到的值重新输出到新文件
        etime=`date +%s`
s=`echo "scale=0; ($etime - $stime)%60" | bc`
m=`echo "scale=0; ($etime - $stime)/60%60" | bc`
h=`echo "scale=0; ($etime - $stime)/60/60" | bc`

echo  处理文件结束:  B08101007.txt.gz
echo `date +"%F %T"` end 耗时 $h 小时 $m 分钟 $s 秒


你可能感兴趣的:(shell)