postvar2nc.sh
#!/usr/bin/bash
# 若参数个数不对,则给出用法提示
if [ $# -ne 1 ]; then
echo "usage: $0 <ctl文件>"
echo "example: $0 post.ctl"
exit 1
fi
ctl_file=$1
echo "ctl file: $ctl_file"
# 遍历当前目录
for file in ./postvar*; do
# 取文件名,示例:file=./postvar001,而filename=postvar001
filename=$(basename $file)
###########################################
# 若不是postvar000这种格式,则跳过
if [[ ! $filename =~ ^postvar[0-9]{3}$ ]]; then
continue
fi
###########################################
echo "processing: $filename"
###########################################
# 修改ctl_file
# 修改 dset
sed -i "/^[[:space:]]*dset/s/.*/dset ^$filename/" $ctl_file
# 修改 tdef,把时间维度改为1,第一个组\(tdef \s*\),第二组\(.*\),后面引用第一组\1,引用第二组\2
sed -i "s/\(tdef\s*\)[0-9]\+\(.*\)/\11\2/" $ctl_file
###########################################
# cdo 转换
cdo -b F32 -f nc import_binary $ctl_file ${filename}.nc
done