繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM