0

私は次のような状況にあります。

 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として使用した場合、完全に機能しますが、ループ内では値を取得していません。

私は提案をする義務があります。

4

2 に答える 2

0

$jin'... " forceState$j.k " ...'は展開されません。
それって問題ですか?

于 2012-03-06T15:30:28.367 に答える
0

$jはシェルスクリプト変数のように見えます。awkスクリプトは一重引用符で囲まれたセクション内にあるため、シェルはawkスクリプト内の変数を置き換えません。つまり、awkはリテラルを見てい$jます。シェルの引用符を変更して置換を許可するか、コマンドラインでより便利に渡す必要があります。例:

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

jここでawk変数にの値が渡されるたびに、ループカウンターが出力されloopctrます。

于 2012-03-06T15:44:19.230 に答える