我有这行代码。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
6bc51xsx1#
你只是去掉了所有不是数字的东西,所以剩下5。请改用撷取群组来撷取第一个数字,并在取代中使用。
5
sed 's/^[^0-9]*\([0-9]*\).*/\1/'
在正则表达式中:
^
[^0-9]*
\(
\)
[0-9]*
.*
在替换中:
\1
1条答案
按热度按时间6bc51xsx1#
你只是去掉了所有不是数字的东西,所以剩下
5
。请改用撷取群组来撷取第一个数字,并在取代中使用。
在正则表达式中:
^
与行首匹配[^0-9]*
匹配行首的所有非数字\(
和\)
围绕捕获组[0-9]*
匹配数字。这些数字在组中捕获.*
与该行的其余部分匹配。在替换中:
\1
会复制撷取群组所比对的行部分。这些是该行上的第一组数字。