ncks: список аргументов слишком длинный - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь извлечь информацию о точке из файла .nc, используя два идентификатора, указанных в файле data.txt. заголовок data.txt

AID CID
 730 285
 535 290
 736 291

Можете ли вы помочь, если есть какие-либо проблемы с этим кодом? Я использую Ubuntu в вдовах и анаконде Linux и получаю сообщение об ошибке «Список аргументов слишком длинный»

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 Ответ

1 голос
/ 25 апреля 2019

Я предполагаю, что ошибка, вероятно, из второго 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
...