如何在Windows和Unix / Linux格式之间转换文本文件中的换行符?
我有一个* nix环境,但是我需要导入和导出Windows样式换行符的数据。 我以为会有一个标准的工具或命令来做到这一点,但我似乎无法find它。
您可能正在寻找dos2unix
, unix2dos
, todos
或fromdos
取决于您的分布。 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
d2u和dos2unix不是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