如何在Windows和Unix / Linux格式之间转换文本文件中的换行符?

如何在Windows和Unix / Linux格式之间转换文本文件中的换行符?

我有一个* nix环境,但是我需要导入和导出Windows样式换行符的数据。 我以为会有一个标准的工具或命令来做到这一点,但我似乎无法find它。

您可能正在寻找dos2unixunix2dostodosfromdos取决于您的分布。 Ubuntu / Debian软件包todos / fromdos作为内存中tofrodos包的一部分。

一个select是在命令行上使用unix2dos (和dos2unix返回)。

另一个是使用文本编辑器:
对于vi::设置ff = dos将行结束符设置为dos行尾。
对于emacs:Cx [ENTER] f dos [ENTER]

对于您最喜欢的基于GUI的编辑器(例如jedit),我build议查看手册或Google。

最后,如果你不想处理文本编辑器,只是使用更常见的实用程序等(或没有安装unix2dos):

tr -d '\r' < infile > outfile从Windows – > Unix
awk 'sub("$", "\r")' unixfile.txt > winfile.txt从Unix转到Unix – > Windows作为tr不能从Unix转到Windows。

在Vim中编辑它并使用set fileformat命令。

  • MS-DOS / Windows(CR + LFrest)到* nix(LF只rest)

     :set fileformat=unix :wq 
  • * nix到MS-DOS / Windows

     :set fileformat=dos :wq 

这就是我使用的类似于Chealion的将Windows转换为Unix的结尾:

 tr -d \\015 < windows > unix 

这样做与POSIX是棘手的:

  • POSIX Sed不支持\r\15 。 即使这样做,就地选项-i不是POSIX

  • POSIX Awk支持\r\15 ,但是-i inplace选项不是POSIX

  • d2udos2unix不是POSIX实用程序 ,但ex

  • POSIX ex不支持\r\15\n\12

删除回车:

 awk 'BEGIN{RS="^$";ORS="";getline;gsub("\r","");print>ARGV[1]}' file 

要添加回车:

 awk 'BEGIN{RS="^$";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file