在循环中使用时,与indice的awk错误

时间:2012-03-06 15:01:55

标签: linux parsing loops indices

我有以下情况。

 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 :(得分:0)

$j 中的

'... " forceState$j.k " ...' 不会展开。
这是一个问题吗?

答案 1 :(得分:0)

$ j看起来是一个shell脚本变量。由于您的awk脚本位于单引号部分中,因此shell不会替换awk脚本中的变量。所以awk看到了文字$j。您需要更改shell引用以允许替换,或者可能更有用地在命令行上传递它,例如:

awk -v loopctr=$j 'BEGIN {print loopctr}'
每次在awk变量j中传递loopctr的值时,

都会打印循环计数器。