用文件中的单词替换 </div>

Zah*_*ahi 4 bash

我想</div>在一个几乎由 2500 页组成的非常长的文档中进行更改,并带有“索引:”一词,但它从未奏效。我尝试sed了许多不同的方式,例如:

 sed '/s^[</div>]/Index:/g'
Run Code Online (Sandbox Code Playgroud)

但它没有用!

你能告诉我什么是正确的命令吗?

例子

</div>
</div>
<script src="https://cdn.pkgs.org/assets/js/main.min.js?v10"></script>
<script>
$(document).ready(function () </div> {
app.init("pkgs.org", 101);
})
</div>
</script>
</body>
Run Code Online (Sandbox Code Playgroud)

我要它

Index:
Index:
<script src="https://cdn.pkgs.org/assets/js/main.min.js?v10"></script>
<script>
$(document).ready(function () Index {
app.init("pkgs.org", 101);
})
Index:
</script>
</body>
Run Code Online (Sandbox Code Playgroud)

Cyc*_*ic3 9

如果删除方括号,使用%而不是/作为sed分隔符来停止与/in混淆</div>,将 s 之前的分隔符移到它之后,并删除插入符号,正则表达式有效:

sed 's%</div>%Index:%g'
Run Code Online (Sandbox Code Playgroud)

  • 更易于阅读:采用其他分隔符。百分比符号也很明显。这样,您无需逃避斜线。 (2认同)

小智 5

我看到三个问题:

  1. 您的 sed 命令的语法是错误的。我相信你的意思是搜索和替换命令,所以 's' 必须在斜杠之前:

    sed 's/^[</div>]/Index:/g'

  2. 您的字符串在搜索字符串中包含斜杠 ('/') 字符这一事实与 sed 混淆。所以你可以用反斜杠转义斜杠:

    sed 's/^[<\/div>]/Index:/g'

    或使用另一个字符作为分隔符:

    sed 's|^[</div>]|Index:|g'

  3. 您[</div>]在搜索中使用了方括号 ( ),这不是您想要的。此表达式匹配方括号内的任何字符一次。尝试不带方括号的以下命令:

    sed 's|^</div>|Index:|g'