gpt4 book ai didi

regex - 如何使用sed匹配并保留一行中的第一个数字?

转载 作者:行者123 更新时间:2023-12-01 07:56:36 25 4
gpt4 key购买 nike



假设我有一行文本,在某处放置了一个数字(它可能在行首、中间或行尾)。

如何使用 sed 匹配并保留在一行中找到的第一个数字?

最小的例子

这是我的尝试(遵循正则表达式教程的 this page)以及数字不同位置的输出:

$echo "SomeText 123SomeText" | sed 's:.*\([0-9][0-9]*\).*:\1:'
3
$echo "123SomeText" | sed 's:.*\([0-9][0-9]*\).*:\1:'
3
$echo "SomeText 123" | sed 's:.*\([0-9][0-9]*\).*:\1:'
3

因为您只能保留最后一位数字,而所需的输出应该是 123 ...

最佳答案

使用 sed:

echo "SomeText 123SomeText 456" | sed -r 's/^[^0-9]*([0-9]+).*$/\1/'
123

您也可以在 gnu awk 中执行此操作:
echo "SomeText 123SomeText 456" | awk '{print gensub(/^[^0-9]*([0-9]+).*$/, "\\1", $0)}'
123

关于regex - 如何使用sed匹配并保留一行中的第一个数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23999432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com