Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
String 用引号替换文本文件中的字符串,用sed替换双引号_String_Unix_Replace_Sed_Quotes - Fatal编程技术网

String 用引号替换文本文件中的字符串,用sed替换双引号

String 用引号替换文本文件中的字符串,用sed替换双引号,string,unix,replace,sed,quotes,String,Unix,Replace,Sed,Quotes,假设我要替换文本文件中的以下字符串: document.write(unescape("%3Cscript src='" + \ + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); 我想出了这个sed命令,但令人惊讶的是什么也没发生 sed -i "s/document.write(unescape(\"%3Cscript src=\"\' + \\ + \"google-analytics.com

假设我要替换文本文件中的以下字符串:

document.write(unescape("%3Cscript src='" + \ + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
我想出了这个sed命令,但令人惊讶的是什么也没发生

sed -i "s/document.write(unescape(\"%3Cscript src=\"\' + \\ + \"google-analytics.com\/ga.js\' type=\'text\/javascript\'%3E%3C\/script%3E\"));//g" myfile.html
这里怎么了

  • 反斜杠应该双重转义,因为它们由
    sed
    和shell展开。使用
    \\\\
    (在shell中变成
    \\
    ,然后在
    sed中变成
    \
  • 您正在匹配
    src=“”
    ,但您的文件包含
    src=”
  • 使用

    我已将
    /
    替换为
    |
    ,以使其更具可读性(不再需要转义
    /

  • 反斜杠应该双重转义,因为它们由
    sed
    和shell展开。使用
    \\\\
    (在shell中变成
    \\
    ,然后在
    sed中变成
    \
  • 您正在匹配
    src=“”
    ,但您的文件包含
    src=”
  • 使用


    我已将
    /
    替换为
    |
    ,以使其更具可读性(不再需要逃避
    /
    )。

    谢谢,我不知道管道的诀窍。然而,这一个不也应该起作用吗?“s/document.write(unescape(\%3Cscript src='\'”++\\\\\+\“google analytics.com\/ga.js'type='text\/javascript'%3E%3C\/script%3E\”);//g”应该可以工作,但在进一步编辑命令之前,我决定使用管道。顺便说一下,它不仅适用于
    |
    ,还可以使用其他字符(请参阅
    sed
    手册)。谢谢,我不知道使用管道的诀窍。然而,这一个不也应该起作用吗?“s/document.write(unescape(\%3Cscript src='\'”++\\\\\+\“google analytics.com\/ga.js'type='text\/javascript'%3E%3C\/script%3E\”);//g”应该可以工作,但在进一步编辑命令之前,我决定使用管道。顺便说一下,它不仅适用于
    |
    ,还可以使用其他字符(请参阅
    sed
    手册)。
    sed -i \
    "s|document.write(unescape(\"%3Cscript src='\" + \\\\ + \"google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E\"));||g" \
    myfile.html