【问题标题】:How to extract value between two words in shell [duplicate]如何在shell中的两个单词之间提取值[重复]
【发布时间】:2021-04-17 13:55:41
【问题描述】:

我有一个这样的字符串: line="06:13:41.817 INFO ProgressMeter - Traversal complete. Processed 46942 total variants in 2.2 minutes."

我想提取46942并放入一个变量。

我试过这个,但它只删除了已处理和总计。我该怎么做?

Var=$(echo $line | sed -e 's/Processed\(.*\)total/\1/')

【问题讨论】:

  • 假设预期结果是var=46942,choroba 的参数扩展答案可能是最快(也是最有效)的方法;如果 OP 出于某种原因希望保持 sed 方法(以及调用子 shell 的额外开销),则以下内容应该有效:var=$(sed -E 's/^.*Processed ([0-9]*) .*$/\1/g' <<< "${line}") ; echo "${var}" => 46942

标签: bash shell unix


【解决方案1】:

使用参数扩展:

line="06:13:41.817 INFO ProgressMeter - Traversal complete. Processed 46942 total variants in 2.2 minutes."
line=${line#*'Processed '}  # Remove from left up to "Processed ".
line=${line%' total'*}      # Remove from from " total" up to the end.

【讨论】:

  • 这行得通。谢谢。
猜你喜欢
  • 2018-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-01
  • 1970-01-01
  • 2020-12-30
  • 2016-12-21
  • 1970-01-01
相关资源
最近更新 更多