You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Bash脚本读取日志提取salary后数值判断是否为MNC

修复方案

你原有脚本存在4个核心问题:

  • 正则匹配规则仅支持薪资到行尾的场景,没有兼容后缀带邮箱的情况,也未限制5-6位数字的匹配要求
  • 提取到多组薪资数据时直接做数值判断会触发语法错误
  • [ $salary > 2000 ] 属于字符串比较逻辑,不是数值比较,判断结果会出错
  • 未处理提取不到任何薪资数据的边界场景

修复后完整脚本

# 提取salary后紧邻的5-6位数字,兼容后面带邮箱、空格、行尾的多种场景
salary_list=$(grep -oP 'salary\s+\K[1-9]\d{4,5}(?=\s|$|@)' tso.txt)

# 初始化MNC标记位
is_mnc=0

# 遍历所有提取到的薪资数值
for sal in $salary_list; do
    # 改用shell数值比较参数-gt,判断逻辑准确
    if [ $sal -gt 2000 ]; then
        is_mnc=1
        # 找到符合要求的薪资直接终止遍历,提高执行效率
        break
    fi
done

if [ $is_mnc -eq 1 ]; then
    echo "it is mnc....."
else
    echo "it is unknown....."
fi

关键改动说明

  • 正则新增-P参数启用Perl正则规则,\K会忽略前面salary\s+的匹配内容,直接提取后续数字
  • [1-9]\d{4,5} 严格匹配5到6位的正整数,避免匹配到不符合要求的短数字
  • (?=\s|$|@) 正向预查逻辑,适配数字后接空格、行尾、邮箱@符号的多种场景
  • 新增遍历逻辑,只要存在一个薪资高于2000就标记为MNC,解决多值判断报错问题
  • 数值比较改用-gt参数,符合shell数值比较语法要求

内容的提问来源于stack exchange,提问作者Muhammad Mustafa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 12:15:04