【发布时间】:2021-04-26 14:40:46
【问题描述】:
文件 1:
<!doctype html><html lang="en"><head><meta name="REPLACE_ME"></head><body></body></html>
文件 2:
<meta name="A" content="A1"><meta name="B" content="B1">
我正在尝试将File 1 中的<meta name="REPLACE_ME"> 替换为File 2 的全部内容。
预期结果:
<!doctype html><html lang="en"><head><meta name="A" content="A1"><meta name="B" content="B1"></head><body></body></html>
如果File 1 有多行,我可以使用这样的东西:
TOKEN="<meta name=\\\"REPLACE_ME\\\">"
sed -e "/${TOKEN}/r file2" -e "/${TOKEN}/d" file1
我遇到的问题是当File 1 中的内容不在单独的行上 时,如何使用sed 执行此操作。
这是我最后一次尝试:
TOKEN="<meta name=\\\"REPLACE_ME\\\">"
sed "s/${TOKEN}/$(sed -e 's/[\&/]/\\&/g' -e 's/$/\\n/' file2 | tr -d '\n')/" file1
但是,它很时髦并使用我想避免的tr。任何帮助将不胜感激。
【问题讨论】:
-
您不应该使用面向行的工具来解析/修改 XML/HTML。最好将示例更改为纯文本、非结构化文本以规避反对意见。