ncks:参数列表过长

时间:2019-04-24 22:56:28

标签: bash shell unix scripting nco

我正在尝试使用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
.......

1 个答案:

答案 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