如何在 Windows 和 Unix/Linux 格式之间转换文本文件中的换行符?
我有一个 *nix 环境,但我需要使用 Windows 样式的换行符导入和导出数据。我以为会有一个标准的实用程序或命令来执行此操作,但我似乎找不到它。
答案1
您可能正在寻找dos2unix
、或unix2dos
,具体取决于您的发行版。Ubuntu/Debian 软件包/作为todos
fromdos
todos
fromdos
托弗罗多斯来自内存的包。
答案2
一个选项是在命令行上使用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 转到 Windows 因为tr
不能从 Unix 转到 Windows。
答案3
在 Vim 中编辑它并使用该set fileformat
命令。
MS-DOS/Windows(CR+LF 中断)至 *nix(仅 LF 中断)
:set fileformat=unix :wq
*nix 到 MS-DOS/Windows
:set fileformat=dos :wq
答案4
使用 POSIX 执行此操作比较棘手:
POSIX Sed不支持
\r
或\15
。即使支持,就地选项-i
也不是 POSIXPOSIX awk支持
\r
和\15
,但-i inplace
选项不是 POSIXd2u和dos2unix不是POSIX 实用程序, 但前任是
POSIX 扩展不支持
\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