gpt4 book ai didi

shell - 如何从字符串中提取有效数字,即使它后跟零

转载 作者:行者123 更新时间:2023-12-02 06:47:23 25 4
gpt4 key购买 nike

sedawk 专家的问题。

如果我有这样的字符串:ABCDEF00012300XYZ。我想提取字母和零后面的数字。所以,我想从字符串中提取 12300

本着精神,我只想提取字符串中的有效数字。 00012300 在数学意义上表示 12300

我尝试了以下

STR=ABCDEF00012300XYZ
VALID_NUMBER="$(echo $STR | awk '{sub(/.*0+/,"");sub(/[a-zA-Z]+/,"")} 1')"

如果我传递 ABCDEF000123XYZ 并且它从 STR 中提取 123,上面的代码就可以工作。但如果 123 后跟零,则失败,在这种情况下,它应该得到 12300

请注意,这是我正在使用的 linux 上的 sed

最佳答案

你可以使用sed:

VALID_NUMBER="$(sed 's/^[A-Z0]*\([0-9]*\).*/\1/' <<< "$STR")"

查看 online sed demo .

^[A-Z0]*\([0-9]*\).* 模式将匹配:

  • ^ - 行首
  • [A-Z0]* - 任何大写字母或零,0 次或多次重复
  • \([0-9]*\) - 这会将 0 个或更多数字捕获到第 1 组
  • .* - 这将匹配该行的其余部分。

那么,替换模式中的\1只会在输出中保留你需要的数字。

关于shell - 如何从字符串中提取有效数字,即使它后跟零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55023994/

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