如何使用awk统计文件第二列以RQ开头的ID出现次数?
awk统计指定列以RQ开头内容的出现次数
原代码错误原因
match()函数参数顺序颠倒:awk中match()的正确语法为match(待检测字符串, 正则规则),你将正则和字段位置写反了- 正则规则不符合需求:
^RQ$表示整个字段完全等于RQ,匹配前缀只需要写^RQ即可 - 文件读取位置错误:你把输入文件
ID.txt传给了后续的wc命令,管道前的awk没有拿到输入源,自然没有输出
正确实现方案
方案1:纯awk实现(推荐,无需额外调用wc)
直接在awk内完成计数,性能更高:
awk -F '\t' 'BEGIN {count=0} $2 ~ /^RQ/ {count++} END {print count}' ID.txt > RQ.txt
说明:
$2 ~ /^RQ/表示判断第二列是否匹配「以RQ开头」的正则规则- 匹配成功则计数器+1,处理完所有行后输出最终计数
- 如果你的文件字段是空格分隔而非制表符分隔,可以去掉
-F '\t'参数,awk默认按任意空白符分割字段
方案2:修正你的原有写法
调整参数顺序和文件位置即可得到正确结果:
awk -F '\t' '$2 ~ /^RQ/' ID.txt | wc -l > RQ.txt
内容的提问来源于stack exchange,提问作者HKJ3
相关产品推荐
相关产品推荐

