我想讀取一個日志檔案,并想提取緊跟在關鍵字“salary”之后的 5-6 位數字。然后想分析一下工資是不是2000以上,如果有2000以上,那就是跨國公司,否則未知。寫完薪水后,該行大部分結束,但有時會有電子郵件選項。
我的腳本目前看起來像這樣。
salary=$(grep -o 'salary [1-9][0-9]\ $' tso.txt | grep -o '[0-9]\ ')
echo $salary
if [ $salary > 2000 ]; then echo "it is mnc....."; else ":it is unknown....."; fi
uj5u.com熱心網友回復:
這可以awk像這樣簡單地完成:
awk '
{
for (i=2; i<=NF; i)
if ($(i-1) == "salary" && $i 0 > 2000) {
mnc = 1
exit
}
}
END {
print (mnc ? "it is mnc....." : "it is unknown.....")
}' file
uj5u.com熱心網友回復:
由于您似乎在使用 GNU grep,因此您可以直接使用 獲取薪水值grep -oP 'salary *0*\K[1-9][0-9]*',然后您可以使用 來檢查薪水if [ $salary -gt 0 ]。
請參閱在線演示:
#!/bin/bash
tso='salary 23000'
salary=$(grep -oP 'salary *0*\K[1-9][0-9]*' <<< "$tso")
echo $salary # => 23000
if [ $salary -gt 0 ]; then
echo "it is mnc.....";
else
echo "it is unknown.....";
fi
# => it is mnc.....
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/372721.html
上一篇:Bash給陣列添加陣列字串后綴
