2015-05-09 176 views
2

我想將變量傳遞給TCL中的awk文件,它與下面的代碼有些類似。有什麼辦法嗎? // out.tr輸入文件和可變傳遞的to_node my_code.tcl:將變量作爲參數傳遞給TCL中的awk文件

set to_node 13 
exec awk -f check_ack.awk out.tr $to_node 

check_ack.awk:

BEGIN {} 
    { 
    # variable passed should be saved in node[i] --> But this doesnot work 
    for (i = 0; i < ARGC; i++) { 
      node[i] = ARGV[i] 
     } 
    status = $7 
     if(FILENAME=="trace.tr") { 
      if(node[1] > -1 && $1 == "s" node[1] == $3 && status == "ack") { 
      print "Node" " "node[1]" " "has not sent acknowledgement" >   "failed.txt" 
      } 
     } 
    } 
    END { 
    exit 0 
    } 
+0

這實際上只是一個awk問題; Tcl完全按照要求發送價值... –

+0

是的。這純粹與awk有關,而awk不能識別傳遞的變量。 –

回答

2

你傳遞變量是這樣的:

awk -f some/script.awk -v var="my value" 

現在你可以在awk中訪問變量var,如果你打印它,你會看到它包含my value

+0

嗨..我得到你的建議錯誤。請幫幫我。 (FILENAME = trace.tr FNR = 375251)致命:無法打開文件'-v'進行讀取(無此文件或目錄) 執行時 「exec awk -f check_ack.awk trace.tr -v var = $ to_node」 –

+0

首先提供'-v'選項,如下所示:'exec awk -f check_ack.awk -v var = $ to_node trace.tr'。 – ShellFish

+0

是的!這工作..謝謝 –

相關問題