没有 LF 的 XML 希望在 shell 中使用 sed 命令使其变得漂亮

没有 LF 的 XML 希望在 shell 中使用 sed 命令使其变得漂亮

我的 git 存储库中有一个项目的结构,并且想在 git bash 中运行 shell 命令以将所有>内容替换为>\n(LF)。我尝试了以下命令:

find . -name '*.xml' -exec sh -c 'sed 's/>/>\n/g "$0"' '{}' ';'

意思是在我的项目中找到的所有 xml 文件中替换上述集合(>with )。>\n

我不知道我做错了什么,因为我用光标 ">"... 进入编辑器(只是在编辑器中使其变得漂亮 - 例如,Note++ 使用 XMLTools 插件很容易,但我希望将我的文件更改为包含它们是每个 XML 标记后面的 LF)

当我只为文件编写命令时 - 它工作得很好:

$ sed 's/>/>\n/g' MyFile.xml

答案1

为此使用是一个坏主意sed,你似乎要做的是格式XML 文件。

对于任何 XML 解析器来说这都是一个简单的任务,例如:

xmllint --format file.xml

该实用程序通常默认安装在 GNU Linux 上,或者与软件包一起安装libxml2

或者

xmlstarlet format file.xml

相关内容