【发布时间】:2023-03-10 10:19:01
【问题描述】:
我有一个文件,里面有电话号码数据,还有一些没用的东西。 我正在尝试解析数字,当只有 1 个电话号码/线路时,这不是问题。 但是当我有多个数字时, sed 匹配最后一个(即使它说它应该只匹配第一个模式?),我无法得到其他数字..
我的数据.txt:
bla bla bla NUM:09011111111 bla bla bla bla NUM:08022222222 bla bla bla
当我解析数据时,我的想法是首先删除第一个电话号码前面的所有“初始”“bla bla bla”(所以我搜索第一次出现的 'NUM:'),然后我删除电话号码后面的所有东西,并获取号码。 之后我想从剩余的字符串中解析下一个匹配项。
所以现在当我尝试 sed 时,我总是得到最后一个数字:
>sed 's/.*NUM://' data.txt
08022222222 bla bla bla
>
首先我想了解我对 SED 的理解有什么问题。当然欢迎更有效的建议! 我的 sed 命令不是说,用 ''(空)替换 'NUM:' 之前的所有内容吗?为什么它总是匹配最后一次出现?
谢谢!
【问题讨论】:
-
Sed 是贪婪的。如果有第二个 NUM:,第一个可以被
.*消费。 -
+1 用于示例数据、隐含的预期输出和一些不起作用的示例代码。祝你好运。
标签: regex parsing sed last-occurrence