我如何计算E* 之后的特定值的出现次数?例如:“EXXXX”?
file.txt:
E2dd,Rv0761,Rv1408
2s32,Rv0761,Rv1862,Rv3086
6r87,Rv0761
Rv2fd90c,Rv1408
Esf62,Rv0761
Evsf62,Rv3086
我尝试输入:
awk -F, '{map[$2]++} END { for (key in map) { print key, map[key] } }' file.txt
并加上:
if [[ $line2 == `E*` ]];then
但不工作,有语法错误
预期输出:
total no of occurrences:
Rv0761: 2
Rv3086:1
现在,我只能计算第二个值的所有出现次数。
2条答案
按热度按时间j0pj023g1#
这肯定不是法律的的GNU
AWK
if语句,请参考If Statement以找到允许的内容,尽管在这种情况下并不需要,因为您可能会如下所示,让file.txt
内容为然后
给出输出
说明:操作(包含在
{
...}
中)前面可以有模式,这会将它们的执行限制到与模式匹配的行(换句话说:条件成立)在上例中,模式为$1~/^E/
,这意味着第1列确实以E
开始。laawzig22#
您差得太近了。您只缺少REGEX来识别以
'E'
开头的记录,然后在输出中连接":"
以产生您想要的结果(不按排序顺序)。例如,您可以执行以下操作:示例输出
使用
file.txt
的数据,您将得到:如果需要以某种方式对输出进行排序,只需使用管道将
awk
命令的输出传输到sort
,并使用所需的任何选项。