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

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

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

我有一个 *nix 环境,但我需要使用 Windows 样式的换行符导入和导出数据。我以为会有一个标准的实用程序或命令来执行此操作,但我似乎找不到它。

答案1

您可能正在寻找dos2unix、或unix2dos,具体取决于您的发行版。Ubuntu/Debian 软件包/作为todosfromdostodosfromdos托弗罗多斯来自内存的包。

答案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 执行此操作比较棘手:

删除回车符:

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

相关内容