用变量awk

时间:2014-02-05 19:51:08

标签: awk

我有一个awk命令打印出第26栏中出现“200”的总次数。

awk '$26 ~ /200/{n++}; END {print n+0}' testfile

如何修改此语句以便将200作为变量传递?例如如果我有一个值为200的变量$ code

提前致谢

2 个答案:

答案 0 :(得分:3)

awk '$26 ~ code {n++} END {print n+0}' code=200 testfile
  

如果命令行上的文件名的格式为var = val,则将其视为变量   分配。变量var将被赋值val。

§ Awk Program Execution

答案 1 :(得分:2)

awk  -v var="$shellVar" '$26~var{n++} END{print n}' file

你在上面看到如何在awk中使用shell变量。你的awk单行的一些注意事项:

  • print n+0没有必要。因为您定义的n,未从输入文字中挑选,并且您明确地执行了n++,因此它是数字类型,n+0没有意义

  • 应删除;之前的END

  • 我复制了关于检查200部分的代码。但它有风险。如果26美元只有一个数字,你可以考虑使用1*$26 == 200$26 == "200"使用正则表达式,在这种情况下可能会给出错误的结果,想想你的26美元,价值是:20200