【问题标题】:Percentage or number of files processed by grep commandgrep 命令处理的文件的百分比或数量
【发布时间】:2017-03-26 20:08:48
【问题描述】:

例如,如果我使用 GREP 命令从 1000 个文件中搜索/检查关键字/字符串;那么是否有任何选项/方法可以查看/显示 GREP 命令处理的文件的百分比或数量...?。

只是我想知道完成搜索过程还需要多长时间。

请帮忙

【问题讨论】:

    标签: linux awk grep zgrep


    【解决方案1】:

    试试awk。这将打印一条消息,提示正在处理的文件号,然后是匹配模式的行。我在这里选择了模式作为字符 p,因为这对我的测试来说很容易。您可以根据您的目的替换为任何有效的正则表达式。

    awk -v PAT="p" 'FNR == 1 { n++; printf "Processing %d of %d files\n", n, ARGC - 1 >> "/dev/stderr"} FILENAME ~ /.gz$/ {print "Skipping gz file: ", FILENAME; nextfile} /PAT/'
    

    说明

    awk -v PAT="p" '
        FNR == 1 {                                # Every first line of the file
           n++;                                   # Counter for file being processed
           printf "Processing %d of %d files\n",  # Print message
              n,                                  # file number
              ARGC - 1                            # Number of files on CLI
              >> "/dev/stderr"                    # Redirect to stderr
        }
        FILENAME ~ /.gz$/ {                       # Skip gunzip files
           print "Skipping gz file: ", FILENAME; 
           nextfile                               # move to next file
        }
        /PAT/                                     # Pattern to print
    '
    

    更新

    更新了代码以在处理时跳过 gunzip (.gz) 文件。

    【讨论】:

    • 将输出与消息混合不是一个好习惯,您可能希望将它们重定向到 stderr。
    • 谢谢@JayRajput ...它确实有点我需要或想要的。但除了 printf 输出之外,我还得到了一些 junk 值。实际上,就我而言,我必须搜索的文件是 .gz 文件;所以这就是为什么我得到那些不需要的垃圾值......?有什么办法可以避免这种情况...?
    • 谢谢@JayRajput .. 但我也需要考虑 .gz 文件。所以请给我一个通用命令;这样它就会以类似的方式处理普通文件和 .gz 文件。对不起,如果我在我的要求上误导了你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多