2015-05-09 175 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

是的!这工作..谢谢 –

相关问题