查看datastage data的某几列
orchadmin dump test.LDF |awk -F"\t" '{print $1","$47"," $48}'
获取linux中某个文件的大小
filesize=`ls -l 20210406.txt | awk -F" " '{print $5}'`
if [ $filesize > 3145728 ] Then echo "filesize=$filesize >3145728" else echo "filesize=$filesize <=3145728" fi
判断文件条件,并复写第36列为"ZZZZZZZZZZ"
cat TEST.SRF |awk -v FS="|" -v OFS="|" '{if($1=="D" && $36==""){$36="ZZZZZZZZZZ";print $0}else{print $0}}' >../../TEST.SRF.bak
判断文件某个条件下,某一列的长度大于10的记录
cat TEST.SRF |awk -v FS="|" -v OFS="|" '{if($1=="D" && length($7)>10) print $0}'
查看第3到第5是空格的行,双引号之间是(5-3+1)个空格
cat test001.txt |awk '{if (substr($0,3,5)==" ") print $0}'
添加字段到55个
cat test.srf |awk -v FS="|" -v OFS="|" '{if($1=="D"){$55="";print $0}else{print $0}}'
计算累计和
cat test.SRF|grep ^D|awk -F "|" '{a[substr($11, length($11), 1)] += substr($11,1,length($11))}END{for (i in a){printf "%s %.2f\n",i,a[i]} }'
复写H打头的行,并展现前三行
ls ./test*.txt|while read file; do mv $file $file.bak; cat $file.bak|awk -v FS="\t" -v OFS="\t" '{if($1=="H"){$5=substr($5,1,4)"2021";$6=substr($6,1,4)"2021";print $0}else{print $0}}' > $file;head -3 $file; done