没有 LF 的 XML 想要在 shell 中使用 sed 命令使它漂亮

Teo*_*Teo 4 shell sed shell-script

我在我的git仓库项目的结构,并想在混帐运行的bash shell命令替换所有>>\n(LF)。我尝试了以下命令:

find . -name '*.xml' -exec sh -c 'sed 's/>/>\n/g "$0"' '{}' ';'
Run Code Online (Sandbox Code Playgroud)

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

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

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

$ sed 's/>/>\n/g' MyFile.xml
Run Code Online (Sandbox Code Playgroud)

Gil*_*not 10

使用它是一个坏主意sed,您似乎要做的是格式化XML 文件。

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

xmllint --format file.xml
Run Code Online (Sandbox Code Playgroud)

此实用程序通常默认安装在 GNU Linux 上,或随包一起安装 libxml2

或者

xmlstarlet format file.xml
Run Code Online (Sandbox Code Playgroud)

  • “为什么这是个坏主意”——这里的讨论很好:[为什么不能使用正则表达式来解析 HTML/XML:外行术语的正式解释](/sf/ask/472577381/ its-not-possible-to-use-regex-to-parse-html-xml-a-formal-explanation-in-la) (6认同)