Bash 替换中间的内容<;表格>;带sed的标签
我有一个包含html文件的文件夹,上面有表单,我需要找到表单标签并替换为一组不同的表单标签。我目前正在使用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
#!/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