Regex 替换为Mac OS X Leopard上的sed';I don’我没做我期望的事
我试图使用sed将\“(反斜杠双引号)替换为“(引号)Regex 替换为Mac OS X Leopard上的sed';I don’我没做我期望的事,regex,macos,unix,sed,Regex,Macos,Unix,Sed,我试图使用sed将\“(反斜杠双引号)替换为“(引号) sed "s/\\\"/\'/g" file.txt 该命令无法按预期工作。它将替换文本文件中的所有“而不仅仅是\” 它与sed“s/\”/\'/g”file.txt的作用相同 我正在研究Mac OS X Leopard 有人有线索吗?您正在处理臭名昭著的shell引用问题。尝试在s//g周围使用单引号,或者添加额外的转义: sed "s/\\\\\"/\'/g" 用bash引用问题很有趣 $ cat input "This is an
sed "s/\\\"/\'/g" file.txt
该命令无法按预期工作。它将替换文本文件中的所有“而不仅仅是\”
它与sed“s/\”/\'/g”file.txt的作用相同
我正在研究Mac OS X Leopard
有人有线索吗?您正在处理臭名昭著的shell引用问题。尝试在s//g周围使用单引号,或者添加额外的转义:
sed "s/\\\\\"/\'/g"
用bash引用问题很有趣 $ cat input "This is an \"input file\" that has quoting issues." $ sed -e 's/\\"/'"'"'/g' input "This is an 'input file' that has quoting issues." $cat输入 “这是一个有引用问题的”“输入文件”“。” $sed-e的/\\“/”/g“输入” “这是一个有引用问题的‘输入文件’。” 请注意,有三个字符串对接在一起构成sed脚本:
s/\\”/
”
/g
s/\\”/
”/g
其中第一个是单引号,第二个是双引号。不必使用太多引号。\042八进制表示
“
,\047八进制表示单引号
awk '{gsub("\042","\047") }{print}' file
如果有疑问,请再加一个反斜杠。很好。您可以将它稍微简化为sed-e的s/\\“/'”/g“inputI我不认为这就是shell引用问题,因为问题在于sed对字符串的解释,而不是shell的解释。sed看到s/\“/\'”/g并将其解释为“与”。@William-我将其描述为“shell引用问题”,因为bash是“燕子”其中一个逃走了,这样塞德就看不到了。