我想在用 \\' 处理我的文件之前替换 \\",然后在处理文件后,我需要将 \\' 替换回 \\"。
输入文件测试替换
"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 语句中使用"+"字符而不是"/":
$ cat /tmp/aa |sed -r 's+\\"+\\'"'"'+g'
"dsd" "N" "gary\'"
"ghj" "fandango\'" "N"
"jjj"" "hjh" "gfgfgfg\'
"ee" "gg"" "N"
在 sed 中使用不同的分隔符
我希望它有所帮助