我有数据输入数据:
#!/bin/bash
search_pattern=AA
awk '-v search='$search_pattern' /search/ {count ++}END {print count, "/", NR} ' input
我想做这样的事情:
1 / 5
欲望输出是:
$search_pattern
问题是:当我使用变量/ 5
时 - 仅显示awk输出:0 / 5
如何“告诉”awk只搜索AA(不是AAA)=强制PATTERN只匹配整个单词
感谢您的帮助。
编辑:
可以添加条件,如果与任何字符串不匹配,请打印catboost
答案 0 :(得分:3)
搜索将采用其他字符串,其中包含此字符串,因此请尝试按照。
(6, 1, '0x19')
(7, 2, '0x02')
(8, 3, '0x2F')
或者显示变量名称等。
var="AA"
awk -v VAR="$var" '$0 == VAR{count++;} END{print count " / " NR}' Input_file
编辑: 如果没有找到匹配到Input_file的匹配项,OP增加了对输出添加0的额外要求,以下内容可能有所帮助。
search_pattern=AA
awk -v search="$search_pattern" '$0 == search {count++}END {print count, "/", NR}' Input_file
答案 1 :(得分:1)
Ravinder的解决方案是正确的。只是将其添加为使用模式匹配的另一种方式。
search_pattern=^AA$
awk -v search="$search_pattern" 'BEGIN{count=0} $0 ~ search {count++} END{print count, "/", NR}' input
^ =行的开头。
$ =行尾。
因此,AAA不会被计算在内。