linux使用dos2unix去掉windows编辑过的文件行尾中的\r

问题描述:

现有两个文件,文件大小在3GB左右

文件1.txt内容如下所示:

文件2.txt内容如下所示:


要将两个文件进行paste合并,文件1内容在前,文件2内容在后

[root@louisvv data]# paste 1.txt 2.txt > 3.txt 

进行合并时,发生异常如下图:


异常分析:

发生该异常,说明合并的文件格式不正确

将两个文件paste先后顺序调换,合并后的文件没有问题,问题出在1.txt文件上,1.txt文件是在windows系统编辑后,再上传到服务器的

异常原因:

因为 DOS下的编辑器和Linux编辑器对文件行末的回车符处理不一致

Windows中,用 /r/n 表示回车换行在Linux中,文本文件用 /n 表示回车换行

平时操作的数据,在linux上操作过于繁杂,为了提高工作效率,在windows下进行编辑,但是编辑过后,格式不同

解决办法:

网上有很多办法,例如vim,sed等方式,但是在处理大文件中,处理效率并不好(vim甚至打开都要好久)

所以,我选择了一种快速的方式:dos2unix

dos2unix 顾名思义,dos to unix是用来将DOS格式的文本文件转换成UNIX格式的一个工具包

快速入门dos2unix

1.安装dos2unix

yum -y install dos2unix*

2.安装完毕后,使用dos2unix对数据进行处理

基础用法:

可以同时处理多个文件

dos2unix 文件

dos2unix默认情况会直接在原来文件上进行更改

如果不想修改原文件,要把转换的结果,保存到新的文件中,可以添加 -n 参数

用法:

dos2unix -n 原文件 新文件 

如果要保持文件时间戳不变,加上 -k 参数

用法:

dos2unix -k 文件

解决实例:

直接修改原文件格式

[root@louisvv data]# dos2unix 1.txt 
dos2unix: converting file 1.txt to Unix format ...

修改后使用paste合并文件,然后在查看合并后的文件

[root@louisvv data]# paste 1.txt 2.txt > 3.txt 

合并后的3.txt文件如下图:


合并后格式正常,异常解决。

亲,看完了点个赞呗!

赫墨拉

我是一个喜爱大数据的小菜鸡,这里是我分享我的成长和经历的博客

You may also like...

发表评论

电子邮件地址不会被公开。