使用 bash 脚本读取和分析文本文件

reading and analyzing a text file with bash script

我想读取一个日志文件,并想提取紧跟在关键字“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


由于您似乎使用的是 GNU grep,您可以直接使用 grep -oP 'salary *0*\K[1-9][0-9]*' 获取薪水值,然后可以使用 if [ $salary -gt 0 ] 查看薪水。

参见online demo

#!/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.....

这可以通过简单的 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