alexeit Asked: 2009-05-08 20:44:55 +0800 CST2009-05-08 20:44:55 +0800 CST 2009-05-08 20:44:55 +0800 CST 如何在 Windows 和 Unix/Linux 格式之间转换文本文件中的换行符? 772 如何在 Windows 和 Unix/Linux 格式之间转换文本文件中的换行符? 我有一个 *nix 环境,但我需要使用 Windows 样式的换行符导入和导出数据。我认为会有一个标准的实用程序或命令来执行此操作,但我似乎找不到它。 windows linux unix 5 个回答 Voted Best Answer saschabeaumont 2009-05-08T20:55:51+08:002009-05-08T20:55:51+08:00 您可能正在寻找dos2unix, unix2dos,todos或fromdos取决于您的发行版。Ubuntu/Debian 软件包todos/fromdos作为内存中tofrodos软件包的一部分。 Chealion 2009-05-08T20:56:43+08:002009-05-08T20:56:43+08:00 一种选择是在命令行上使用unix2dos(并dos2unix返回)。 另一种是使用文本编辑器: 对于 vi: :set ff=dos 将行尾设置为 dos 行尾。 对于 emacs:Cx [ENTER] f dos [ENTER] 对于您最喜欢的基于 GUI 的编辑器(例如 jedit),我建议您查看手册或 Google。 最后,如果您不想处理文本编辑器而只是使用更常见的实用程序等(或没有安装 unix2dos): tr -d '\r' < infile > outfile从 Windows -> Unix awk 'sub("$", "\r")' unixfile.txt > winfile.txt到从 Unix -> Windowstr不能从 Unix 到 Windows。 nedm 2009-05-09T12:56:03+08:002009-05-09T12:56:03+08:00 在 Vim 中编辑它并使用set fileformat命令。 MS-DOS/Windows(CR+LF 中断)到 *nix(仅 LF 中断) :set fileformat=unix :wq *nix 到 MS-DOS/Windows :set fileformat=dos :wq Josh 2012-10-08T10:20:11+08:002012-10-08T10:20:11+08:00 这是我使用的,类似于 Chealion,将 Windows 转换为 Unix 行尾: tr -d \\015 < windows > unix Zombo 2016-07-18T17:39:11+08:002016-07-18T17:39:11+08:00 使用 POSIX 执行此操作很棘手: POSIX Sed不支持\r或\15。即使是这样,就地选项-i也不是 POSIX POSIX Awk确实支持\rand \15,但是该-i inplace选项不是 POSIX d2u和dos2unix不是POSIX 实用程序,但ex是 POSIX ex不支持\r, \15,\n或\12 要删除回车: awk 'BEGIN{RS="\1";ORS="";getline;gsub("\r","");print>ARGV[1]}' file 添加回车: awk 'BEGIN{RS="\1";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file
您可能正在寻找
dos2unix
,unix2dos
,todos
或fromdos
取决于您的发行版。Ubuntu/Debian 软件包todos
/fromdos
作为内存中tofrodos软件包的一部分。一种选择是在命令行上使用
unix2dos
(并dos2unix
返回)。另一种是使用文本编辑器:
对于 vi: :set ff=dos 将行尾设置为 dos 行尾。
对于 emacs:Cx [ENTER] f dos [ENTER]
对于您最喜欢的基于 GUI 的编辑器(例如 jedit),我建议您查看手册或 Google。
最后,如果您不想处理文本编辑器而只是使用更常见的实用程序等(或没有安装 unix2dos):
tr -d '\r' < infile > outfile
从 Windows -> Unixawk 'sub("$", "\r")' unixfile.txt > winfile.txt
到从 Unix -> Windowstr
不能从 Unix 到 Windows。在 Vim 中编辑它并使用
set fileformat
命令。MS-DOS/Windows(CR+LF 中断)到 *nix(仅 LF 中断)
*nix 到 MS-DOS/Windows
这是我使用的,类似于 Chealion,将 Windows 转换为 Unix 行尾:
使用 POSIX 执行此操作很棘手:
POSIX Sed不支持
\r
或\15
。即使是这样,就地选项-i
也不是 POSIXPOSIX Awk确实支持
\r
and\15
,但是该-i inplace
选项不是 POSIXd2u和dos2unix不是POSIX 实用程序,但ex是
POSIX ex不支持
\r
,\15
,\n
或\12
要删除回车:
添加回车: