我有一个逗号分隔的txt文件,有没有办法正则表达式只能在第n个逗号之后进行搜索和替换,比方说,在第三个逗号之后 这样:
data1,data2,data3,regex,can,start,search,and,replace,here
其实我需要执行这个正则表达式
查找:,key1,[^,]*
替换:,0,0
我从Change the value of the key, then delete the key on comma delimited CSV using regex
学到的希望我只能在第n个逗号后执行相同的操作
谢谢!
答案 0 :(得分:2)
我不知道你正在使用什么样的正则表达式,所以你可能需要稍微修复一下(可能是逃避parens /括号),但你的正则表达式应该是这样的:
^([^,]*,){n,}key1,[^,]*
[^,]*,
与CSV中的字段和后面的逗号匹配,([^,]*,){n}
(用数字替换n
)匹配n次。例如,使用sed,您可以使用
sed 's/^\(\([^,]*,\)\{2\}\)key1,[^,]*,/\10,0,/' foo.csv
在第二个逗号后用key1,whatever
替换0,0
。
如果您的意思是在第n个或更晚的逗号之后,请使用{n,}
代替{n}
(这意味着"匹配n次或更多次)。