Unix - Oracle:如何在文件末尾删除CR

时间:2012-05-23 16:19:54

标签: oracle unix csv carriage-return

我使用oracle过程(utl_file.put_line)生成一个csv文件(example.csv),但是当我用记事本打开文件时,我意识到文件末尾有一个CR(回车符)。我只想删除那个CR。

该文件在服务器UNIX(AIX)上生成,我使用记事本在我的计算机(Windows)上打开它。

感谢您的帮助

3 个答案:

答案 0 :(得分:3)

这似乎是错误的方式。 Unix中的换行符是换行符(LF),而Windows上是换行符换行符(CRLF)。

如果您在Unix中创建一个文件并在Windows中打开它,我会发现很少有问题,因为Windows通常会表示您认为LF是换行符。如果你反过来这样做,在Windows中生成文件并在Linux中打开,你应该期望在每一行的末尾都有一个流浪角色。

The documentation表示utl_file.put_line “会附加特定于操作系统的行终止符。”这意味着您遇到的问题毫无意义。每行末尾应该有一个LF。此外,即使Oracle错误地执行此操作并附加Windows换行符,它也将是CRLF。

由于某种原因可能是记事本在最后添加CR,尽管这并没有多大意义。

如果你总是要在windows中查看文件,那么解决方法是使用utl_file.put,它不包括最后的操作系统特定换行符,并在最后连接CRLF。 / p>

某些行,utl_file.put( filename, theline || chr(13) || chr(10) );其中chr(n)返回字符集中值为 n 的字符。 13是回车的Ascii和新线的10。

答案 1 :(得分:0)

解决此问题的最简单,最常用的方法是使用此工具unix2dos。在unix框上运行此命令,然后在窗口中打开new_example.csv文件

这是给你的命令:

unix2dos -n example.csv new_example.csv

答案 2 :(得分:0)

扩展Ben的答案:

您也可以使用utl_file.put_line( filename, theline || chr(13));

该行末尾的输出[CR] [LF]相同。