如何用Bash去除文件中_PROD后连续重复的数字?
解决_PROD后连续重复数字的去重问题
需求:将文本中_PROD后缀的连续重复数字仅保留单个,例如_PROD1111转为_PROD1,保留_PRODxxxx,的结构仅去重重复数字。
原始输入(BEFORE FILE)
NET_SalesD_PROD1111,mexico NET_Sales4_PROD22,newjersy NET_SalesG_PROD333,bull
目标输出(AFTER FILE)
NET_SalesD_PROD1,mexico NET_Sales4_PROD2,newjersy NET_SalesG_PROD3,bull
解决方案:使用sed命令
你之前的正则未生效是因为没正确捕获重复数字并替换,用以下带扩展正则的sed命令即可实现:
sed -E 's/(PROD)([0-9])\2*/\1\2/g' input.txt
命令解释:
-E:启用扩展正则表达式,无需对括号等符号转义,简化写法(PROD):捕获第一个分组,匹配固定字符串PROD([0-9]):捕获第二个分组,匹配单个数字\2*:匹配第二个分组捕获到的数字的任意次重复\1\2:替换为第一个分组内容(PROD)加上第二个分组的单个数字g:全局替换,确保一行内所有符合规则的内容都被处理
执行该命令后,即可将原始文本转换为目标格式。
内容的提问来源于stack exchange,提问作者adamtjgogo
相关产品推荐
相关产品推荐

