如何按数值约束过滤 UNIX 标准输出



我想获取一个标准输出流并将其过滤为仅保存大于 100 的值而不使用 awk .我有一堆其他的 unix 命令通过管道连接在一起,这导致了各种数字的 stdout 流。我想将任何大于 99 的数字传递到文件中。我想象这样的东西:

several commands | unix-tool 100 > stdout_that_is_>99

似乎这应该是微不足道的,我错过了一些东西。谢谢!

您可以将 grep 与正则表达式一起使用来匹配任何 3+ 位数字,例如:

command | grep '[1-9][0-9]{2}' >"stdout_that_is_>99"

这将很容易适应任何数量级的工作。

gefilt() {
    while read num; do
        if (( $num+0 >= $1 )); then
            echo $num
        fi
    done
}
several commands | gefilt 100

最新更新