我有一个逗号分隔的文件,其中我需要更改第一列,删除字符串中的前导零。文本文件如下所示
ABC-0001,ab,0001
ABC-0010,bc,0010我需要得到下面的数据
ABC-1,ab,0001
ABC-10,bc,0010我可以使用命令行替换,如下所示:
sed 's/ABC-0*[1-9]/ABC-[1-9]/g' file 我最终得到了输出:
ABC-[1-9],ab,0001
ABC-[1-9]0,ac,0010你能告诉我我错过了什么吗。
另外,我还尝试在生成此文件的SQL中应用格式,如下所示:
select regexp_replace(key,'((0+)|1-9|0+)','(1-9|0+)') from file where key in ('ABC-0001','ABC-0010') 它的输出为
ABC-(1-9|0+)1
ABC-(1-9|0+)1(1-9|0+) 任何一种解决方案的帮助都将非常有帮助!
发布于 2018-03-07 03:21:52
试试这个:
sed -E 's/ABC-0*([1-9])/ABC-\1/g' file
------ --
| |
capturing group |
captured group发布于 2018-03-08 03:33:54
要在使用Oracle的查询中执行此操作,您希望删除的带有零的键值位于名为"file“的表中的" key”列中,如下所示:
select regexp_replace(key, '(-)(0+)(.*)', '\1\3')
from file;您需要捕获破折号,因为它在匹配时被正则表达式“消费”。然后是第二组一个或多个0,然后是字段的其余部分。替换为捕获的组1和3,在输出之间保留0(如果有)。
https://stackoverflow.com/questions/49138414
复制相似问题