sed,awk正则表达式替换字符串

时间:2015-08-26 14:42:04

标签: regex awk sed

我正在处理像这样的CSV文件

"EF", "12345", "Test, String", "Xyz"我需要输出

"EF", "12345", "Test$$$ String", "Xyz"

基本上我需要用$$$

替换逗号

3 个答案:

答案 0 :(得分:3)

您可以使用gnu-awk:

awk 'BEGIN{OFS=", "; FPAT="\"[^\"]+\""} {sub(/,/, "$$$", $3)} 1' file
"EF", "12345", "Test$$$ String", "Xyz"

答案 1 :(得分:2)

您可以尝试这样的事情:

, ([^"])

并替换为:

$$$ $1

Regex live here.

甚至这个:

([^"]),

并替换为:

$1$$$

Regex live here.

答案 2 :(得分:0)

它也适用于sub。
awk'{sub(/ Test,/,“Test $$$”)} 1'文件
“EF”,“12345”,“Test $$$ String”,“Xyz”