[英]Reformat text in in a file linux via a bash script
我有一堆带有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(换行符字符)格式化为实际的换行符并保存文件。 我该怎么做呢?
尝试这个。
sed -i.save -e 's/\\n/\n/g' <file>
它将在适当的位置编辑文件,并使用扩展名“.save”保存原始文件。
sed
命令可以完成以下操作:
sed 's/\\n/\n/g' input_file > output_file
这使用sed的替换运算符用换行符替换所有出现的“\\ n”。 substitution命令遵循语法
s/search_regex/replacement_text/operands
在这种情况下,搜索正则表达式为'\\ n',它搜索后跟'n'的文字反斜杠,并用换行符'\\ n'替换。 操作数'g'导致它在整个文件上运行,而不仅仅是第一次出现。 另请注意,引用了整个替换字符串,因此bash在传递给sed之前不会进行转义级别。
试试man sed
或者在这里查看更多信息: http : //www.grymoire.com/Unix/Sed.html
有快速和脏的正则表达式方法:
perl -pe 's!\n!<br/>!sg'
不确定它是否足以满足您的需求。
Pure Bash:
while read -r line ; do
echo -e "$line"
done < "$infile" > "$outfile"
echo语句中的引号保留所有空格。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.