首页 > 解决方案 > 如何在shell中提取两个单词之间的值

问题描述

我有一个这样的字符串: 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/')

标签: bashshellunix

解决方案


使用参数扩展:

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.

推荐阅读