如何用awk统计各文件指定列中字符串的出现次数并输出结果
用awk统计指定列中目标字符串的出现次数
需求
使用awk工具统计每个文件指定列中目标字符串(如"col1")的出现次数,并输出文件名与对应计数。
测试文件内容
现有两个测试文件file.csv和fild.csv,内容如下:
> cat file.csv col1,col2,col3,col4 col1,col2,col3 col1,col2 col1 col1,col2,col3,col4,col5 > cat fild.csv col1,col2,col3,col4 col1,col2,col3 col1,col2 col1 col1,col2,col3,col4,col5
期望输出
file.csv,5 fild.csv,5
尝试过程
- 第一步:输出指定列符合条件的内容
> awk -F, '$1 == "col1" {print $1}' file.csv col1 col1 col1 col1 col1
- 第二步:尝试输出文件名与列内容,但缺少逗号分隔符
> awk -F, '$1 == "col1" {print FILENAME $1}' file.csv file.csvcol1 file.csvcol1 file.csvcol1 file.csvcol1 file.csvcol1
- 第三步:批量处理文件的尝试
> awk -F, '$1 == "col1" {print FILENAME $1}' fil*.csv fild.csvcol1 fild.csvcol1 fild.csvcol1 fild.csvcol1 fild.csvcol1 file.csvcol1 file.csvcol1 file.csvcol1 file.csvcol1 file.csvcol1
最终可行命令
awk 'BEGIN{FS=OFS=","} $1 == "col1" {cnt++} ENDFILE{print FILENAME, (cnt>0&&cnt?cnt:"0"); cnt=0}' fil*.csv
执行后输出:
fild.csv,5 file1.csv,0 file.csv,5
内容的提问来源于stack exchange,提问作者HattrickNZ
相关产品推荐
相关产品推荐

