- 首页 > it技术 > >
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 秒
推荐阅读