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

如何在bash中从命令输出结果里提取指定参数并赋值给变量

提取指定内容并赋值给Bash变量的方法

你可以通过以下任意一种常用的文本处理命令实现需求:


方法1:使用grep(Perl正则模式)

直接通过正则前瞻后顾匹配括号内的内容:

shutdown_duration=$(last -1x shutdown | grep -oP '(?<=\().*(?=\))')

参数说明:

  • -o:仅输出匹配到的内容,而非整行
  • -P:启用Perl正则语法
  • (?<=\():匹配左括号(右侧的位置,不会将左括号计入匹配结果
  • (?=\)):匹配右括号)左侧的位置,不会将右括号计入匹配结果

方法2:使用awk(更简洁,适配字段固定的场景)

你的示例输出中括号内容是最后一个字段,直接处理最后一个字段去掉括号即可:

shutdown_duration=$(last -1x shutdown | awk '{gsub(/[()]/,"",$NF);print $NF}')

参数说明:

  • $NF:指代当前行的最后一个字段
  • gsub(/[()]/,"",$NF):将最后一个字段中的所有左右括号替换为空
  • 如果你执行命令时可能输出空行,可以加过滤逻辑:
    shutdown_duration=$(last -1x shutdown | grep -v '^$' | awk '{gsub(/[()]/,"",$NF);print $NF}')
    

方法3:使用sed

通过正则捕获组提取括号内内容:

shutdown_duration=$(last -1x shutdown | sed -E 's/.*\((.*)\).*/\1/')

参数说明:

  • -E:启用扩展正则语法
  • \((.*)\):捕获两个括号中间的所有内容,\1指代第一个捕获组的内容

赋值完成后执行echo $shutdown_duration即可验证输出结果为11:00。

内容的提问来源于stack exchange,提问作者Xiaomi Account

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:18:03