是否可以在grep中同时过滤和计数?

时间:2018-01-04 15:54:06

标签: awk grep

我有一个包含数百万行的文件(Apple的EPF) 我需要的是使用很少的搜索术语来过滤它,但同时我需要匹配的行数放在输出文件的最后一行。 我当然想到了两次运行 - 一次是过滤,另一次是重要的,但这看起来不是最佳解决方案,因为一个过滤器可能需要几分钟。

现在我正在测试这样的事情:

grep -f filtrowanie application_price_old > appprice_temp
perl -i -pe 's/#recordsWritten\:\d{7,8}/#recordsWritten:`grep -e '^\d' -c 
appprice_temp`/ appprice_temp

1 个答案:

答案 0 :(得分:1)

根据您在问题中提供的文字和代码,这可能是您正在寻找的内容:

awk '
    NR==FNR { regexps[$0]; next }
    {
        for (regexp in regexps) {
            if ($0 ~ regexp) {
                print
                cnt++
                next
            }
        }
    }
    END {
        print "#recordsWritten:" cnt+0
    }
' filtrowanie application_price_old > appprice_temp

如果这不是您所需要的,那么请编辑您的问题以澄清您的要求,并提供简明,可测试的样本输入和预期输出。