shell 如何使用sed获取第一个数字并忽略其余数字

vfhzx4xs  于 2022-11-16  发布在  Shell
关注(0)|答案(1)|浏览(186)

我有这行代码。sed取10和5。我怎么能提取10而忽略5呢?

$ NUMBER=$(echo "The food is ready in 10mins and transport is coming in 5mins." | sed 's/[^0-9]*//g') ; echo $NUMBER
6bc51xsx

6bc51xsx1#

你只是去掉了所有不是数字的东西,所以剩下5
请改用撷取群组来撷取第一个数字,并在取代中使用。

sed 's/^[^0-9]*\([0-9]*\).*/\1/'

在正则表达式中:

  • ^与行首匹配
  • [^0-9]*匹配行首的所有非数字
  • \(\)围绕捕获组
  • [0-9]*匹配数字。这些数字在组中捕获
  • .*与该行的其余部分匹配。

在替换中:

  • \1会复制撷取群组所比对的行部分。这些是该行上的第一组数字。

相关问题