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 秒



    推荐阅读