记一次文件操作的失误

事情经过

最近没事闲得慌就到处找Linux命令敲,首先是自己在Windows上找了一个全英文的txt文件然后就稀里糊涂的把文件通过SecuCRT的rz把文件传到Linux终端了,然后用该文件练习grep命令就发生了悲剧

怀疑人生的时刻

首先是用grep做一些简单的文件过滤操作

[google@CentOS7 workspace]$ cat task.txt 
I am RHCE teacher!
I teach linux.
test
 
 
I like badminton ball ,billiard ball and chinese chess!
my blog is http://www.tfantastic.com
our site is http://www.easthome.com
 
 
my qq num is 191868516.
not 191886888516.
[google@CentOS7 workspace]$ grep ^m task.txt 
my blog is http://www.tfantastic.com
my qq num is 191868516.
[google@CentOS7 workspace]$ grep m$ task.txt 
[google@CentOS7 workspace]$

咦~,怎么没有匹配成功啊?是不是自己的命令有问题于是百度,几轮下来发现命令没问题啊那怎么不显示啊,用一下这个试试

[google@CentOS7 workspace]$ grep [m]$ task.txt 
[google@CentOS7 workspace]$ 

咦~,还是没有,是不是我电脑有问题?不还是先clear all试一下

[google@CentOS7 workspace]$ clear all

操作完只有还是不行,那就重启一下再试试,几分钟过去~~,开机了!再次输入命令,还是没有显示,TM是不是我的电脑不一样啊?打住停止猜想,看看这文件是不是有什么特别的

[google@CentOS7 workspace]$ file task.txt 
task.txt: ASCII text, with CRLF line terminators
[google@CentOS7 workspace]$ 

with CRLF line terminators这是什么鬼,搜一下看看
原来Linux和Windows文本文件的行结束标志不同。在Linux中,文本文件用"/n"表示回车换行,而Windows用"/r/n"表示回车换行。怪不得我执行grep ^m task.txt没问题,从后面过滤就没显示了

解决问题

dos2unix命令用来将DOS格式的文本文件转换成UNIX格式。win下的文本文件是以m 作 为 断 行 标 志 的 , 而 U n i x 下 的 文 本 文 件 是 以 作为断行标志的,而Unix下的文本文件是以 Unix作为断行标志的。(可以使用cat -A 详细查询)

[google@CentOS7 workspace]$ dos2unix task.txt 
dos2unix: converting file task.txt to Unix format ...
[google@CentOS7 workspace]$ 

输入grep 命令再看看

[google@CentOS7 workspace]$ grep m$ task.txt 
my blog is http://www.tfantastic.com
our site is http://www.easthome.com

好了人生回到正轨,继续开始搬砖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值