Linux

如何從文件中提取值,將其與變數進行比較並發送到輸出文件

  • October 1, 2022

我的文件夾中有這些文件:

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

注:其余文件內部結構相同,但編號有所變化

所以我有興趣從這些文件中提取的值是“總數:數字”。這個值總是在每個文件的第一行:

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

我應該將它與這個變數進行比較:

max="1073741824"

所以我需要的是,如果這些值中的任何一個超過 $ max variable (value > $ 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

怎麼做?謝謝

嘗試這個:

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

請注意重音符號的使用,並且“=”周圍沒有空格。

當然,這裡沒有錯誤檢查。

引用自:https://serverfault.com/questions/1111995