awk中的状态检查

时间:2018-04-07 10:33:36

标签: bash shell awk

我尝试在shell脚本中为变量awk: ${12}==W {print $3} awk: ^ syntax error awk: cmd. line:1: ${12}==W {print $3} 赋值 - 第一个完美地工作,第二个失败,语法错误如下所示。唯一的区别在于'=='。

c=`zgrep "600" $present_date$b$a* | awk -F "," '$4==600 {print $3}' | sort | uniq | wc -l`

c=`zgrep "600" $present_date$b$a* | awk -F "," '${12}==W {print $3}' | sort | uniq | wc -l`

这是我尝试过的代码:

ngModel

任何人都可以帮助我 - 这里有什么问题。

更多要点: 我有100个文件,每个文件有38个以逗号分隔的字段。

$ present_date $ b $ a * - 根据日期获取所有文件。我知道这很好用。

我需要计算所有唯一的第3个字段条目,其中包含'600'和第12个字段= W

2 个答案:

答案 0 :(得分:0)

删除12周围的大括号,并引用您匹配的字符串,如下所示:

awk -F "," '$12=="W" {print $3}'

答案 1 :(得分:0)

awk不是shell。 awk是一个拥有所有语言的工具,其语法与C语言远比shell更相似。因此,不要尝试在awk脚本中使用${variable} == value之类的shell语法,而是使用C / awk语法variable == value。你不需要sort,uniq和wc btw - awk脚本可以做你想要的:

awk -F',' '($4==600) && ($12=="W") && !seen[$0]++{cnt++} END{print cnt+0}'