我有一堆带有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(换行符字符)格式化为实际的换行符并保存文件。我该怎么做?
答案 0 :(得分:1)
试试这个。
sed -i.save -e 's/\\n/\n/g' <file>
它将在适当的位置编辑文件,并使用扩展名“.save”保存原始文件。
答案 1 :(得分: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
答案 2 :(得分:1)
快速而肮脏的正则表达式方法:
perl -pe 's!\n!<br/>!sg'
不确定它是否足以满足您的需求。
答案 3 :(得分:0)
Pure Bash:
while read -r line ; do
echo -e "$line"
done < "$infile" > "$outfile"
echo语句中的引号保留所有空格。