我的情况很简单:我有一个HTML 文件,其中有几行仅包含缩进的<section>
块标记,每行后面跟着一个(也缩进的)<h3 id="YYYY">...</h3>
标题标记。
就像这样:
<section>
<h3 id="2024"><a href="index.fr.html#2024">fr</a> 2024 <a href="index.html#2024">en</a></h3>
当使用锚点链接转到页面内的特定年份(或其翻译)时,年份标题将隐藏在 后面<header>
。
通过将属性从 标签向上移动一行即可解决该问题,id
<h3>
<section>
像这样:
<section id="2024">
<h3><a href="index.fr.html#2024">fr</a> 2024 <a href="index.html#2024">en</a></h3>
是否有简单的一行或命令可以让我将所有这些id
属性从<h3>
标签切换到<section>
上一行的标签?我还没有找到如何匹配BSD
sed
或中的多行,尤其是awk
。
sed 's:<section>\(\s*\)<h3\( id="\[0-9\]{4}"\):<section\2>\1<h3:g' index.html
\n\t\t
不会更改文件。代替\s
或使用双反斜杠转义也
不会更改文件。
是否有像我假设的那样匹配空格字符的选项GNU
sed
?也许只能在命令中直接插入/使用换行符/制表符,但我想学得更好,而且因为我在远程工作,不得不使用termux
...Android
我也没有足够的技能来使用awk
解决方法。
具有匹配和不匹配行的无意义文件,以及一对已经具有正确格式的行:
尽管有可能做到这一点
sed
,但我的sed
技能还不足以完成这项任务。虽然 OP 已经声明——
I am not skilled enough to use an awk workaround
问题已被标记awk
,所以我会尝试解决方案awk
……这将生成: