我正在尝试使用data.txt中提供的两个ID从.nc文件中提取点信息 data.txt头
AID CID
730 285
535 290
736 291
如果此代码有任何问题,您可以帮忙吗?我在寡妇和anaconda Linux中使用Ubuntu,并收到错误“参数列表过长”
ids=`head -6 data.txt | awk '{if(NR>1) print $1}'`
echo $ids
ids=`cat data.txt | awk '{if(NR>1) print $1}'`
for id in $ids
do
aid=`cat data.txt | awk '{if($1=='${id}') print $1}'`
rch=`cat data.txt | awk '{if($1=='${id}') print $2}'`
index=`ncks -v rid ./file.nc | grep "$rch" | sed -e 's/rid\[//g' |awk 'BEGIN{FS="]"}{print $1}'`
echo id=$id aid=$aid rch=$rch index={$index}
ncks -O -v Qout -d rid,$index ./file.nc > temp.nc
/bin/mv temp.nc data_aid${aid}_cid${rch}.nc
done
最后,我希望得到;
data_730_285.nc
data_535_290.nc
data_736_291.nc
.......
答案 0 :(得分:1)
我猜该错误可能是由于第二个ids
分配引起的。您可以通过传递数据而不是将其存储在变量中来解决该问题:
tail -n +2 data.txt | while read aid rch
do
# ...
done
注意:
aid=...
行相当于aid=$id
ncks
的作用,但是后面的grep "$rch"
似乎容易产生误报(数字可以包含在其他数字中(例如123也在12345中))/bin/mv temp.nc data_aid${aid}_cid${rch}.nc
应该类似于/bin/mv temp.nc data_${aid}_${rch}.nc