繁体   English   中英

用Sed Linux替换双反斜杠双引号

[英]Replacing Double Backslash Double Quotes with Sed Linux

我想在用\\\\'处理文件之前替换\\\\“,然后在处理文件后需要将\\\\'替换回\\\\”。

输入文件testreplace

"dsd" "\N" "gary\\""
"ghj" "fandango\\\"" "\N"
"jjj"" "hjh" "gfgfgfg\\"
"ee" "gg\"" "\N"

使用sed将//“替换为//”时出现问题。我使用了以下命令。

sed "s/\\\\\"/\\\\\'/g" testreplace > testreplaceopt

但是此命令也用\\替换\\“,但是我想在只有两个反斜杠时替换

处理完文件后,我尝试使用以下命令将\\\\'替换为\\\\“

sed "s/\\\\\'/\\\\\"/g" testreplaceopt > testreplace_back

但它没有被取代

任何帮助,将不胜感激。

sed替换中可以使用不同的定界符。

在sed语句中使用哈希字符或加号字符,在双引号中使用单引号。

我想提到的另一件事是使用双反斜杠字符,而不是在单引号语句中为每个反斜杠字符使用一个。

例如:

$ cat /tmp/aa |sed -r 's+\\\\"+\\\\'"'"'+g'
"dsd" "\N" "gary\\'"
"ghj" "fandango\\\'" "\N"
"jjj"" "hjh" "gfgfgfg\\'
"ee" "gg\"" "\N"

或者如果您想在sed语句中使用'+'char而不是'/':

$ cat /tmp/aa |sed -r 's+\\\\"+\\\\'"'"'+g'
"dsd" "\N" "gary\\'"
"ghj" "fandango\\\'" "\N"
"jjj"" "hjh" "gfgfgfg\\'
"ee" "gg\"" "\N"

在sed中使用不同的分隔符

希望对您有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM