用修改后的字符串替换字符

时间:2014-07-22 08:52:50

标签: regex

我有一个1000行的文件看起来像

"20140611","20:19","C","IT","IT","HDR","HDPDIT","675605","000000135.97"," ..........

我正在尝试替换与此模式匹配的所有匹配项: 引用6个数字后跟一个结束语(即“675605”和“675605 @”)

使用编辑加正则表达式搜索和替换,搜索字符串为:

\"[0-9][0-9][0-9][0-9][0-9][0-9]\"

这将找到我需要的所有事件

但是我无法使用reg ex构造正确的替换来替换匹配自身,然后是@符号,例如“675605 @

4 个答案:

答案 0 :(得分:1)

使用sed,您可以:

sed -r 's|"([0-9]{6})"|"\1@"|g' file

添加-i以内联修改它。

所以我提出的正则表达式 - 替换形式是:

"([0-9]{6})" - "\1@"

引用:

\"([0-9]{6})\" - \"\\1@\"

答案 1 :(得分:1)

正则表达式:

\"([0-9][0-9][0-9][0-9][0-9][0-9])\"

替换字符串:

"\1@

DEMO

如果您需要"\1"

,替换字符串将为"675605@"

答案 2 :(得分:0)

您需要使用捕获组。我不知道你是否可以在Edit Plus中使用它们,但我认为它应该可行:

查找内容:\"(\d{6})\" 替换为:\"\1@\"

其中\1是括号中捕获的数字。

答案 3 :(得分:0)

使用以下命令在vim或vi编辑器中打开文件:

vi“filename”

然后使用此命令将“675605”模式替换为“675605 @” :%S /六十七万五千六百零五分之六十七万五千六百零五@ /克 然后 esc:wq 现在你打开你的文件,用“675605 @”替换你所有的“675605”模式。