Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/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
Bash 替换中间的内容<;表格>;带sed的标签_Bash_Perl_Sed_Scripting - Fatal编程技术网

Bash 替换中间的内容<;表格>;带sed的标签

Bash 替换中间的内容<;表格>;带sed的标签,bash,perl,sed,scripting,Bash,Perl,Sed,Scripting,我有一个包含html文件的文件夹,上面有表单,我需要找到表单标签并替换为一组不同的表单标签。我目前正在使用sed,但使用此代码无效: #!/bin/bash REPLACEWITH="<form method='post' action=''><?php include('form.php'); ?><\/form>" sed -r "s/(<form>)(.*)(<\/form>)/\1$REPLACEWITH\3/" -i inde

我有一个包含html文件的文件夹,上面有表单,我需要找到表单标签并替换为一组不同的表单标签。我目前正在使用sed,但使用此代码无效:

#!/bin/bash
REPLACEWITH="<form method='post' action=''><?php include('form.php'); ?><\/form>"
sed -r "s/(<form>)(.*)(<\/form>)/\1$REPLACEWITH\3/" -i index.html
#/bin/bash
替换为“”
sed-r“s/()(.*)()/\1$REPLACEWITH\3/”-i index.html
我这样做对吗?我似乎无法让它工作!非常感谢任何指点

  • 您的
    sed
    命令需要删除一些转义。
    f
    都不需要转义:

     sed -E "s/(<form>)(.*)(<\/form>)/\1$REPLACEWITH\3/" 
    
    如果不进行切换,则会混淆替换命令

  • 如果替换命令使用了不同的分隔符,则可以删除转义斜杠的需要。例如,使用
    s | old | new |
    代替
    s/old/new/

    正如评论者所指出的,正则表达式是一个有限的工具,用于编辑html的所有潜在复杂性。但是,如果已知您的html文件具有相对简单和可预测的形式,那么正则表达式可能是最简单的解决方案

    全集
    REPLACEWITH=“”
    sed-i-r“s/()(.*)()/\1$REPLACEWITH\3/”target_file.html
    
    使用正则表达式解析html不是一个好主意。有关详细信息,请参见此处:@user3547033它为我运行。我只是再次测试了一下,它仍然适合我。你看到了什么错误?您正在使用的脚本是否与我在上面显示的“完整脚本”完全相同?@user3547033我将您更新的问题中的代码复制到我的计算机上,并且运行良好。它会给你任何错误信息吗?你在用什么操作系统?(OSX上的Unix实用程序通常存在细微的不兼容性。)
    REPLACEWITH="<form method='post' action=''><?php include("form.php"); ?><\/form>"
    
    REPLACEWITH="<form method='post' action=''><?php include("form.php"); ?><\/form>"
    sed -i -r "s/(<form>)(.*)(<\/form>)/\1$REPLACEWITH\3/"  target_file.html