Как добавить числа в элементы массива awk?

Если у меня есть следующая переменная bash:

$ echo "${pos}" 201 719 744 205 354 

… следующее производит …

 !#bin/bash ( IFS=: awk -v str2="$pos" -v sep="[$IFS]" ' BEGIN { m = split(str2, b, sep) for (i=1; i<=m; ++i) {print b[i]} } ' ) ----------------- $ ./myscript.sh 201 719 744 205 354 

… но потом делать …

 ( IFS=: awk -v str2="$pos" -v sep="[$IFS]" ' BEGIN { m = split(str2, b, sep) for (i=1; i<=m; ++i) {print b[i]+10} } ' ) ------ ./myscript.sh 211 

… поэтому добавление работает, но не печатает результаты для всех элементов. Почему нет?

  • scp для псевдонима
  • Использование функции оболочки bash внутри AWK
  • Если #head versionnumber.txt <#head lastversionnumber.txt, то: сделайте это
  • нужна портативная crontab-проверка хоста / отказоустойчивая логика в Linux и Cygwin
  • Скрипт для отправки всех соответствующих файлов в каталог
  • Управление средой, переданной дочернему процессу bash
  • Как выводить на экран переопределение перенаправления
  • bash regex не распознает все группы
  • One Solution collect form web for “Как добавить числа в элементы массива awk?”

    Это ваш IFS =: не установлен правильно. Таким образом, split () не заполняет массив значениями, но заполняет его одним значением str2, поэтому в цикле for вы печатаете b [i], но на самом деле вы печатаете один раз b [1], который является вашей всей str2, и потому что он имеет новые строки, которые, по вашему мнению, печатают элементы массива b, но если вы проверите m для значения retrn для split (), это 1. Удалите IFS =: и ваш скрипт должен работать правильно.

    Linux и Unix - лучшая ОС в мире.