问题描述:
现有两个文件,文件大小在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文件如下图:
合并后格式正常,异常解决。
亲,看完了点个赞呗!
5+