1

我有一堆带有 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 (换行符)格式化为实际的换行符并保存文件。我该怎么做呢?

4

4 回答 4

1

试试这个。

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

它将就地编辑文件,并以扩展名“.save”保存原始文件。

于 2013-04-26T23:46:38.303 回答
1

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或在此处查看更多信息: http ://www.grymoire.com/Unix/Sed.html

于 2013-04-26T23:46:54.343 回答
1

有快速而肮脏的正则表达式方法:

perl -pe 's!\n!<br/>!sg' 

不确定它是否足以满足您的需求。

于 2013-04-26T23:47:10.253 回答
0

纯重击:

while read -r line ; do
  echo -e "$line"
done < "$infile" > "$outfile"

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

于 2013-04-27T07:26:01.887 回答