【问题标题】:Running multiple nodes automatically using awk from tcl script使用 tcl 脚本中的 awk 自动运行多个节点
【发布时间】:2014-05-22 05:06:21
【问题描述】:

我有一个名为 throughput.awk 的 awk 文件来计算 NS-2 中跟踪文件的吞吐量。

BEGIN {
    FS="[[:space:]]|_"
}

{
  action = $1;
  node_id = $4;
  time = $2;
  dest = $6;
  app = $10;
  pkt_size = $11;

  if ( action == "r" && dest == "MAC" && app == "cbr" && time > 10 && (node_id == 1)) {
    sum_ = sum_ + pkt_size;
  }
}
END {

}

我想要的是我必须从 TCL 脚本计算每个节点的多个节点的吞吐量可能是这样的:

for {set node 1} {$node < N } {incr node}
    exec awk -f throughput.awk test.tr
}

所以跟踪文件中的“节点”变量可以从 TCL 更改。怎么做?

【问题讨论】:

    标签: awk tcl


    【解决方案1】:

    只需使用-v参数:

    for (node=1;node<N;node++){
        exec awk -v node=$node -f throughput.awk test.tr
    }
    

    在 awk 里面

    if ( action == "r" && dest == "MAC" && app == "cbr" && time > 10 && (node_id == node)) {
        sum_ = sum_ + pkt_size;
      }
    

    “=”之前的节点将是 awk 中变量的名称,其值 ($node) 将是 Tcl 中的节点 val

    【讨论】:

    • awk 文件中的 node == 1 怎么样?那我应该改变什么?
    • 所以“=”之前的第一个“节点”是 TCL 或 awk 脚本中的变量?并且节点 == 1 的 awk 文件内部没有变化?
    • 在“=”之前的节点将是 awk 中变量的名称,它的值 ($node) 将是 TLC 中的节点 val
    • 运行这些代码时出现错误,我用于 {set node 1} {$node
    • 当我使用 node=$node 并在 awk 文件的开头删除 node_id 声明时它可以工作
    猜你喜欢
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 2023-01-29
    相关资源
    最近更新 更多