在“BEFORE FILE”下面的文本文件中,如何删除重复的数字,使其看起来像下面的“AFTER FILE”?“_PRODxxxx”(其中x是数字)将保持该格式。
存档前
NET_SalesD_PROD1111,mexico
NET_Sales4_PROD22,newjersy
NET_SalesG_PROD333,bull
文件后
NET_SalesD_PROD1,mexico
NET_Sales4_PROD2,newjersy
NET_SalesG_PROD3,bull
我尝试使用sed和正则表达式捕获组,如“PROD[1-9]{2,4}”,但无法使其工作。
4条答案
按热度按时间sbdsn5lh1#
使用捕获组来捕获第一个数字,并使用反向引用来匹配它的重复。然后在替换中使用相同的反向引用来生成其中的一个。
lg40wkob2#
***第一个解决方案:***如果你对Perl没问题,那么就用正则表达式和捕获组功能,然后在正则表达式中使用贪婪匹配和懒惰匹配功能来实现所需的输出。
***第二种解决方案:***在perl中使用简单的替换,使用捕获组来查找重复项,并将其替换为自身,然后是
,
。b09cbbtk3#
假设:
_PROD[0-9]+,
_PROD
之后的第一个数字一种
sed
方法:其中:
(_PROD[0-9])
-(第一个)捕获组匹配字符串_PROD<single_digit>
,后跟...[0-9]*
-零位或多位\1
-用(第一个)捕获组替换匹配项vwkv1x7d4#
很长的路,如果你想
awk
它: