如何在 Unix 和 DOS 格式之间转换文本文件

LogicEchoX
• 阅读 1374

本文介绍如何在 Unix 和 DOS 格式之间转换文本文件。DOS 文本文件带有回车符( \r )和换行符( \n )作为它们的换行符,而 Unix 文本文件只有( \n )换行符作为换行符。
有多种方法可以将 DOS 文本文件转换为 Unix 格式。但建议使用一个名为 dos2unix / unix2dos 的工具在 DOS 和 Unix 格式之间转换文本文件。
如何在 Unix 和 DOS 格式之间转换文本文件
dos2unix:
unix2dos:
tr, awk, sed:
你可以使用od命令识别文件是 DOS 格式还是 Unix 格式,如下所示。

[root@server1 ~]# od -bc windows.txt
0000000 141 163 144 154 146 152 015 012 141 163 144 146 141 163 144 146

      a   s   d   l   f   j  \r  \n   a   s   d   f   a   s   d   f

0000020 015 012 141 163 147 146 015 012 141 163 144 146 015 012 141 163

     \r  \n   a   s   g   f  \r  \n   a   s   d   f  \r  \n   a   s

0000040 144 146 015 012 141 163 144 146 147 144 015 012 144 147

      d   f  \r  \n   a   s   d   f   g   d  \r  \n   d   g

0000056
如何在 Unix 和 DOS 格式之间转换文本文件如何在 Unix 和 DOS 格式之间转换文本文件
上面的输出表示这是一个 DOS 格式的文件,因为它包含了\r\n。
如何在 Unix 和 DOS 格式之间转换文本文件如何在 Unix 和 DOS 格式之间转换文本文件

如何在 Linux 上安装 dos2unix
CentOS中安装dos2unix:

[root@server1 ~]# yum -y install dos2unix
Ubuntu中安装dos2unix:

$ sudo apt install dos2unix
如何将 DOS 文件转换为 UNIX 格式
以下命令将“windows.txt”文件从 DOS 格式转换为 Unix 格式。这个文件的修改就是把文件每一行的“\r”去掉。

[root@server1 ~]# dos2unix windows.txt
dos2unix: converting file windows.txt to Unix format...
使用dos2unix命令将覆盖原始文件。

使用od命令查看,可以看到\r\n已经转换为\n了。
如何在 Unix 和 DOS 格式之间转换文本文件如何在 Unix 和 DOS 格式之间转换文本文件
如果要保留原始文件,请使用以下命令。这会将转换后的输出保存为新文件:

[root@server1 ~]# dos2unix -n windows.txt unix.txt
dos2unix: converting file windows.txt to file unix.txt in Unix format...
如何在 Unix 和 DOS 格式之间转换文本文件如何在 Unix 和 DOS 格式之间转换文本文件

如何使用 tr 命令将 DOS 文件转换为 UNIX 格式
可以使用 tr 命令将 DOS 文件转换为 Unix 格式,如下所示:

[root@server1 ~]# tr -d '\r' < windows.txt > unix.txt
上面命令使用-d选项删除\r回车符。
如何在 Unix 和 DOS 格式之间转换文本文件如何在 Unix 和 DOS 格式之间转换文本文件
注意:不能使用 tr 命令将文件从 Unix 格式转换为 DOS 格式。

如何使用 awk 命令将 DOS 文件转换为 UNIX 格式
以下使用 awk 命令格式将 DOS 文件转换为 Unix 格式:

[root@server1 ~]# awk '{ sub("\r$", ""); print }' windows.txt > unix.txt
如何在 Unix 和 DOS 格式之间转换文本文件如何在 Unix 和 DOS 格式之间转换文本文件
上面命令使用awk命令的sub()函数,将以\r结尾的替换为空。

如何将 UNIX 文件转换为 DOS 格式
当将文件从 UNIX 转换为 DOS 格式时,它会在每一行中添加一个回车符( \r )。

[root@server1 ~]# unix2dos unix.txt
如何在 Unix 和 DOS 格式之间转换文本文件如何在 Unix 和 DOS 格式之间转换文本文件
上面命令操作之后,可以看到将unix格式的转换成dos格式了。

如果需要保留原文件,可以使用-n选项。

[root@server1 ~]# unix2dos -n unix.txt windows.txt
unix2dos: converting file unix.txt to file windows.txt in DOS format...
如何使用 awk 命令将 UNIX 文件转换为 DOS 格式
以下使用 awk 命令将 UNIX 文件转换为 DOS 格式。下面使用 awk 命令将“unix.txt”文件转换为 DOS 格式文件“windows.txt”。

[root@server1 ~]# awk 'sub("$", "\r")' unix.txt > windows.txt
如何在 Unix 和 DOS 格式之间转换文本文件如何在 Unix 和 DOS 格式之间转换文本文件

总结
本文介绍如何在 Unix 和 DOS 格式之间转换文本文件。

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
mysql中时间比较的实现
MySql中时间比较的实现unix\_timestamp()unix\_timestamp函数可以接受一个参数,也可以不使用参数。它的返回值是一个无符号的整数。不使用参数,它返回自1970年1月1日0时0分0秒到现在所经过的秒数,如果使用参数,参数的类型为时间类型或者时间类型的字符串表示,则是从1970010100:00:0
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
HIVE 时间操作函数
日期函数UNIX时间戳转日期函数: from\_unixtime语法:   from\_unixtime(bigint unixtime\, string format\)返回值: string说明: 转化UNIX时间戳(从19700101 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:hive   selec
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Stella981 Stella981
3年前
Notepad++中Windows,Unix,Mac三种格式之间的转换
由于历史原因,导致Windows,Unix/Linux,Mac三者之间,对于文件中所用回车换行符,表示的方法,都不一样。这就导致了很多人都会遇到回车换行符的困惑,和需要在不同格式间进行转换。其中,关于回车换行符的详细解释,去看这里\13\此处,介绍一下,如何通过Notepad实现在这三者之间进行转换。查看当前文件格式(换行符用的是什么
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这