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

时间:2019-07-20 17:58:50

标签: linux sed replace backslash

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

输入文件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

但没有被替换

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

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

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

例如:

lst = ["1 5 3","2 6 -1"]

print([int(x) * int(y) for x, y in zip(lst[0].split(), lst[1].split())])
# [2, 30, -3]

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

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

Using different delimiters in sed

我希望对您有帮助