Ошибка awk с индексом при использовании в цикле - PullRequest
0 голосов
/ 06 марта 2012

У меня следующая ситуация.

 awk '$0 != "Force for tool binder"   # print all lines until string found
 $0 =="Force for tool binder"{
 print ; getline ; print;            # go to 2 lines below the string
 getline; getline < " forceState$j.k "; print}' dynaFile_Offen1.k > tempDynaFile.k   # take the string from 
 #the file forceStates$j.k and replace in the main file, generating a temp file.

Проблема в том, что здесь j является индексом цикла, то есть для первого случая это j = 1.когда я использовал его как forceStates1.k, он отлично работает, но в цикле он не принимает значение.

Я был бы благодарен за предложения.

Ответы [ 2 ]

0 голосов
/ 06 марта 2012

$ j выглядит как переменная сценария оболочки.Поскольку ваш скрипт awk находится в одном разделе, заключенном в кавычки, оболочка не будет заменять переменные внутри скрипта awk.Так что awk видит буквальный $j.Вам нужно изменить кавычки оболочки, чтобы разрешить подстановку, или, возможно, более целесообразно передать их в командной строке, например:

awk -v loopctr=$j 'BEGIN {print loopctr}'

будет печатать ваш счетчик цикла каждый раз, когда значение j передается впеременная awk loopctr здесь.

0 голосов
/ 06 марта 2012

$j в '... " forceState$j.k " ...' не будет расширен.
Это проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...