Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 替换为Mac OS X Leopard上的sed';I don’我没做我期望的事_Regex_Macos_Unix_Sed - Fatal编程技术网

Regex 替换为Mac OS X Leopard上的sed';I don’我没做我期望的事

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将\“(反斜杠双引号)替换为“(引号)

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
第一个和最后一个用单引号引,中间用双引号引

Matthew的命令通过连接两个字符串而不是三个:

  • s/\\”/
  • ”/g

其中第一个是单引号,第二个是双引号。

不必使用太多引号。\042八进制表示
,\047八进制表示单引号

awk '{gsub("\042","\047") }{print}' file

如果有疑问,请再加一个反斜杠。很好。您可以将它稍微简化为sed-e的s/\\“/'”/g“inputI我不认为这就是shell引用问题,因为问题在于sed对字符串的解释,而不是shell的解释。sed看到s/\“/\'”/g并将其解释为“与”。@William-我将其描述为“shell引用问题”,因为bash是“燕子”其中一个逃走了,这样塞德就看不到了。