最近没事闲得慌就到处找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好了人生回到正轨,继续开始搬砖