Linux
如何從文件中提取值,將其與變數進行比較並發送到輸出文件
我的文件夾中有這些文件:
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
請注意重音符號的使用,並且“=”周圍沒有空格。
當然,這裡沒有錯誤檢查。