【发布时间】:2022-10-21 20:15:05
【问题描述】:
我有这行代码。 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
【问题讨论】:
我有这行代码。 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
【问题讨论】:
你只是删除了所有不是数字的东西,所以留下了5。
相反,使用捕获组来捕获第一个数字,并在替换中使用它。
sed 's/^[^0-9]*([0-9]*).*//'
在正则表达式中:
^ 匹配行首[^0-9]* 匹配行首的所有非数字( 和 ) 包围一个捕获组[0-9]* 匹配数字。这些是在组中捕获的.* 匹配该行的其余部分。
在替换中:
复制捕获组匹配的行部分。这些是线路上的第一组数字。
【讨论】:
sed 使用正则表达式。