如何从文件中提取值,将其与变量进行比较并发送到文件

如何从文件中提取值,将其与变量进行比较并发送到文件

我的文件夹中有以下文件:

ls myfolder
filefoo filebar filefoobar

例如filefoo的内容为:

total: 379400041
cache_object://localhost/active_requests    379400041       6778    0-13955161 0-14111309 0-12250718 0-11422369 0-11901178 0-11781835 0-12687756 0-17663930 5-110207691 6-123940805 2-39477289 0-0 0-0 0-0 0-0 0-0 0-0 0-0 0-0 0-0 0-0 0-0 0-0 0-0
bla bla bla

注意:其余文件具有相同的内部结构,但数字会发生变化

因此,我感兴趣的从这些文件中提取的值是“total:number”。此值始终位于每个文件的第一行:

find myfolder -type f -exec awk '/^total:/{print $NF}' {} +
379400041
35402285
8589934592

我应该将它与这个变量进行比较:

max="1073741824"

所以我需要的是,如果这些值中的任何一个超过 $max 变量(值 > $max),它应该将文件输出到输出列表。示例(非功能性):


if (( "value" > "$max" )); then
# or if [ "value" -gt "$max" ]; then
    the command to send the file to a list is missing > output.lst
 else
    echo "do nothing"
fi

预期输出:

cat output.lst
filefoobar

因为 filefoobar 有 8589934592 并且这个值 > $max

怎么办?谢谢

答案1

尝试这个:

$ max="1073741824"
$ ( cd myfolder
    for file in *
    do
        if (( `awk <$file '/^total/ {print($2)}'` > $max ))
        then echo $file
        fi
    done
) >output.lst

请注意重音符号的使用,并且“=”周围没有空格。

当然这里没有错误检查。

相关内容