【发布时间】:2016-01-20 15:05:47
【问题描述】:
仅当连字符后跟超过 2 个数字时才删除连字符?
输入:
101|9881|Customer contact on 12-01-2015|AXD
102|9882|Declined sales. 122-333-1234 contact|XYZ
输出:
101|9881|Customer contact on 12-01-2015|AXD
102|9882|Declined sales. 1223331234 contact|XYZ
我用过这个……
sed 's/([0-9])-([0-9])/\1\2/g' inputfile
但它会替换所有带连字符的数字的连字符。
有什么帮助吗?
【问题讨论】:
-
为什么不应该将
12-01-2015转换为12-012015?第二个连字符 IS 后跟多于 2 个数字。等一下 - 你的主题是hyphen follows more than 2 digits,但你的文字是hyphen is followed by more than 2 digits。你要哪个?还是两者之一? -
基本上它背后的想法是保持日期不变并结合日期以外的其他数字。
-
那么该方法应该只是从任何与日期正则表达式不匹配的数字和连字符字符串中删除连字符,例如在 awk 中会是
/[0-9-]+/ && !/[0-9]{2}-[0-9]{2}-[0-9]{4}/。无论如何,看起来你有一个满意的答案......