【发布时间】:2018-05-26 17:36:58
【问题描述】:
我需要从文件中删除所有数字,除了 (ST|TH|[RN]D) 后面的数字(序数)。我不确定如何在 sed 中引入这样的异常(我知道 [^] 但这不会让我给字符串可选的 (ST|TH|[RN]D)。
看起来前瞻可能是答案,但我的构造不起作用
s/[0-9][0-9]*(?!(ST|[RN]D))//g
示例输入:
12663 METRO CONDOMINIUM AS DESC IN INST# 200800031138 UNIT A
126TH AVENUE INDUSTRIAL PARK
13 AND 12-29-19
102-1st AVE CONDO
刚刚添加了最后一个,这是一大堆输入。我真的很想消除前面的数字,但留下序数。 Revo 的例子效果很好。但这种极端情况对我来说实际上很重要。
预期输出:
METRO CONDOMINIUM AS DESC IN INST# UNIT A
126TH AVENUE INDUSTRIAL PARK
AND --
-1st AVE CONDO
不要关心消除空格。我可以自己做。
【问题讨论】:
-
Sed 不支持环视,这是一种 PCRE 构造(Perl 兼容的正则表达式); sed 仅支持基本和扩展正则表达式。
-
我可以用什么工具代替?规定的正则表达式会起作用吗?
-
您能添加示例输入吗?数字是在单独的行上还是在文本中?至于工具,我想到了 Perl。
-
你想输出什么?
-
请添加预期输出。
标签: regex perl sed regex-lookarounds