我使用oracle程序(utl_file.put_line)生成了一个csv文件(example.csv),但是当我用记事本打开文件时,我意识到文件末尾有一个CR(回车)。我只想删除那个 CR。
该文件是在服务器 UNIX (AIX) 上生成的,我使用记事本在我的计算机 (Windows) 上打开它。
谢谢你的帮助
我使用oracle程序(utl_file.put_line)生成了一个csv文件(example.csv),但是当我用记事本打开文件时,我意识到文件末尾有一个CR(回车)。我只想删除那个 CR。
该文件是在服务器 UNIX (AIX) 上生成的,我使用记事本在我的计算机 (Windows) 上打开它。
谢谢你的帮助
这似乎是错误的方式。Unix 中的换行符是换行符 (LF),而 Windows 中的换行符是回车换行符 (CRLF)。
如果您在 Unix 中创建一个文件并在 Windows 中打开它,我预计很少会出现问题,因为 Windows 通常可以解决您的意思是 LF 换行符。如果您以相反的方式执行此操作,在 Windows 中生成文件并在 Linux 中打开,您可能应该期望每行末尾都有一个杂散字符。
该文档说utl_file.put_line
“附加了一个特定于操作系统的行终止符”。这意味着您遇到的问题毫无意义。每行的末尾应该有一个 LF。此外,即使 Oracle 错误地执行此操作并附加 Windows 换行符,它也会是 CRLF。
可能是记事本出于某种原因在末尾附加了一个 CR,尽管这并没有多大意义。
解决方法是,如果您总是要在 windows 中查看文件,请使用utl_file.put
,它不包括最后的操作系统特定换行符并在最后连接 CRLF。
某行,utl_file.put( filename, theline || chr(13) || chr(10) );
其中chr(n)
返回字符集中具有n值的字符。13 是用于回车的 Ascii,而 10 是用于换行的。
解决这个问题的最简单和最常见的方法是使用这个工具 unix2dos。在您的 unix 机器上运行此命令,然后在您的窗口中打开 new_example.csv 文件
这是给你的命令:
unix2dos -n example.csv new_example.csv
扩展本的答案:
你也可以使用utl_file.put_line( filename, theline || chr(13));
输出与行尾的 [CR][LF] 相同。