Bash 仅当匹配项大于3时进行awk打印,小于3时不打印
如何使awk仅在匹配3或更多时打印,而在小于3时不打印 我不擅长awk编程。但我试过了Bash 仅当匹配项大于3时进行awk打印,小于3时不打印,bash,awk,Bash,Awk,如何使awk仅在匹配3或更多时打印,而在小于3时不打印 我不擅长awk编程。但我试过了 awk '/DEF/ {count++;print} { if ( count > 2 ) print count } ' file DEF DEF是上述命令的结果。它不应该打印,因为文件中只有一个匹配项,而不是3个或更多 模式DEF只在文件中出现过一次,但awk仍然会打印它,即使我在if语句中写到,仅当它匹配3个或更多时才打印。知道我做错了什么吗?这将打印文件中带有DEF的行数超
awk '/DEF/ {count++;print} { if ( count > 2 ) print count } ' file
DEF
DEF是上述命令的结果。它不应该打印,因为文件中只有一个匹配项,而不是3个或更多
模式DEF只在文件中出现过一次,但awk仍然会打印它,即使我在if语句中写到,仅当它匹配3个或更多时才打印。知道我做错了什么吗?这将打印文件中带有
DEF
的行数超过2次(3次或更多):
如果一行上有两个DEF
,则计为一行或两行DEF
当找到两行以上的DEF
行时,打印找到的行
awk '/DEF/ {++c;a[NR]=$0} END {if (c>2) {for (i in a) print a[i]}}' file
这将打印一行,其中包含找到的DEF
行数以及行数
awk '/DEF/ {++c;a[NR]=$0} END {if (c>2) {print "DEF found "c" times";for (i in a) print a[i]}}' file
这将打印点击数和在中找到的行号:
awk '/DEF/ {++c;a[NR]=$0} END {if (c>2) {print "DEF found "c" times\n-----";for (i in a) {print ++t". line "i": "a[i]}}}' file
DEF found 3 times
-----
1. line 4: DEF first time
2. line 8: red DEF second time
3. line 16: DEF more
它可以工作,但只显示3的计数。它没有显示匹配项。有没有办法同时显示比赛和计数?Thanks@thegeek5当找到两个以上的
DEF
时,您想显示所有匹配的行还是仅显示这些行?查看我的更新。我想同时查看匹配的行和计数。例如,我想看到DEF和数字3或更多。这可能吗?谢谢,最后一个成功了:)。谢谢你,谢谢你,谢谢你!!!顺便说一句,我该如何标记这篇文章并给你荣誉或声誉呢?@thegeek5欢迎你。接受已解决的答案,然后单击向上箭头。
awk '/DEF/ {++c;a[NR]=$0} END {if (c>2) {print "DEF found "c" times\n-----";for (i in a) {print ++t". line "i": "a[i]}}}' file
DEF found 3 times
-----
1. line 4: DEF first time
2. line 8: red DEF second time
3. line 16: DEF more