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


33

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

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

Answers:


42

你可能寻找dos2unixunix2dostodosfromdos根据您的分布。Ubuntu / Debian软件包todos/ fromdos作为内存中tofrodos软件包的一部分。


4
如果有人在寻找Windows解决方案时遇到此问题,则上游站点dos2unixwaterlan.home.xs4all.nl/dos2unix.html,它也可以在Windows中使用。
womble

您可以使用Homebrew在Mac OS X上安装dos2unix/unix2dos。安装Homebrew后,命令为,使用此公式brew install dos2unix
罗里·奥肯

24

一种选择是在命令行上使用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。


dos2unix发挥了作用,但是感谢tr实用程序,它过去可以节省很多时间!
alexeit

如果文件末尾混合,请确保以正确的方式加载它ff:e ++ff=unix。至少对dos -> unix转换有意义。
x-yuri

那个好客的班轮正在教一个人钓鱼,为此。将来,我的饥饿程度会有所
Gareth Davidson 2014年

13

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

  • MS-DOS / Windows(CR + LF中断)到* nix(仅LF中断)

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

    :set fileformat=dos
    :wq
    

如果文件的最后一行没有换行符,请小心使用;vim将添加一个,除非您知道如何告诉它不这样做。
CesarB

经过数小时尝试其他所有解决方案后,这就是我需要的救生员。在OS X上的优胜美地确诊行为hexdump -C也证实了这是- 粘性-这是每台vi会议
Techmag

8

这是类似于Chealion所使用的,用于将Windows转换为Unix行尾:

tr -d \\015 < windows > unix

张贴者想要将unix粘贴到Windows行尾。而且您的答案迟到了几年。
ott-- 2012年

5
谁在乎它是否“晚了”?它仍然有效,并且仍然适用于该问题。我只是为跟随它的读者添加了另一个选择,就像我自己一样。另外,他的问题要求使用Windows-> Unix,而他的描述要求使用Unix-> Windows。耸耸肩
乔什(Josh)

对。也许您添加了另一个tr命令,然后将unix转换为Windows。
ott-- 2012年

我试图撤消降级投票,但它说它一直被锁定,直到文章被编辑为止。
ott-- 2012年

@ott-没问题,我为您投票。...等等,现在不能为我投票!... dang ... :)
Alois Mahdal

1

使用POSIX这样做很棘手:

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

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

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

  • 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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.