awk - 从文件中的一行检查模式并计算与该模式匹配的行数
问题描述
我有一个名为checks的目录,其中有一个名为true.txt的文件,如下所示:
Column1 column2 column3 column4 column5
Data 25 gen(*) 87 65
Stem 34 gen(*) 23 76
Invert 36 gen($) 89 67
Delete 32 gen($) 43 23
print 34 gen(*) 34 34
ctrl 23 gen($) 33 43
我需要计算包含gen(*)的行数和包含gen($)的行数,与 column1 无关,并且在某些情况下column3 gen($)可能不存在,然后我需要将其打印为零,我共享输出语法以供参考和所需输出,如下所示:
output syntax:
Directoryname : count of gen($) count of gen(*)
output:
checks : 3 3
我尝试了这段代码,但没有得到确切的输出:
#!/bin/bash
for d in checks
awk 'BEGIN
FNR==NR
/gen \(\*\)/{
tot=FNR
next
}
END{
print "checks : ",tot-1
}
' true.txt
解决方案
请您尝试以下操作。书面和测试链接 https://ideone.com/xBrCzc
awk '
$3=="gen(*)"{ countGenstar++ }
$3=="gen($)"{ countGendollar++ }
END{
print "Count: ",countGenstar+0,countGendollar+0
}' Input_file
推荐阅读
- python - 在 x 轴上绘制日期失败并扩展到子图
- sql-server-2008 - 机器人框架 - 连接到 MS SQL 数据库 - 登录错误
- javascript - 使用 JavaScript 执行器连接可变字符串
- arrays - 如何连接以逗号分隔的命名范围的返回值
- mysql - B树的最小占用率是多少?
- c# - 如何从 Ninja Trader 的操作中使用 C# 制作 JSON 帖子?
- javascript - 如何在运行测试用例之前正确初始化/加载 aurelia-dialog 插件?
- google-chrome - 将不安全的来源视为安全
- javascript - 关于在 JavaScript 中调用函数,哪一个是正确的?
- c++11 - 为什么委托给默认构造函数不为零初始化成员变量