Xml 通过bash脚本在linux文件中重新格式化文本

Xml 通过bash脚本在linux文件中重新格式化文本,xml,linux,bash,xml-parsing,Xml,Linux,Bash,Xml Parsing,我有一堆XML文本文件,如下所示: <?xml version="1.0"?>\n<cdr core-uuid="dba286e1-8eb4-4792-9f3b-ff358c06bcad">\n <channel_data>\n <state>CS_REPORTING</state>\n <direction>inbound</direction>\n <state_number>

我有一堆XML文本文件,如下所示:

<?xml version="1.0"?>\n<cdr core-uuid="dba286e1-8eb4-4792-9f3b-ff358c06bcad">\n  <channel_data>\n    <state>CS_REPORTING</state>\n    <direction>inbound</direction>\n    <state_number>11</state_number>\n
\n\n\n CS\U报告\n入站\n 11\n
所有内容都在一行中,我希望将每个\n(换行符)格式化为实际的换行符并保存文件。我该怎么做?

试试这个

sed -i.save -e 's/\\n/\n/g' <file>
sed-i.save-e's/\\n/\n/g'

它将在位编辑文件,并保存扩展名为“.save”的原始文件。

sed命令可以执行以下操作:

sed 's/\\n/\n/g' input_file > output_file
这将使用sed的替换运算符用换行符替换所有出现的“\n”。替换命令遵循以下语法

s/search_regex/replacement_text/operands
在本例中,搜索正则表达式为“\n”,它搜索后跟“n”的文本反斜杠,并用换行符“\n”替换。操作数“g”使其在整个文件上运行,而不仅仅是第一次出现。还要注意,整个替换字符串都被引用,因此bash在传递给sed之前不会进行一定程度的转义

请尝试
man sed
或查看此处以了解更多信息:
有一种快速而肮脏的正则表达式方法:

perl -pe 's!\n!<br/>!sg' 
perl-pe的\n
!sg'
但不确定它是否足以满足您的需求。

Pure Bash:

while read -r line ; do
  echo -e "$line"
done < "$infile" > "$outfile"
读取-r行时
;做
回声-e“$line”
完成<“$infle”>“$outfile”

echo语句中的引号保留了所有空格。

找到了答案:cat file | sed的/\\n/\n/g'无法使用
tr
实现它:)我误解了这个问题。