Linux下cut命令的使用

本文发布时间: 2019-Mar-22
Linux下有诸多进行文本处理的命令,这里介绍的是cut命令。cut命令能够对文本文件中的行,进行按字节、字符和字段进行剪切,然后将指定的相应部分写到标准输出。如果没有给定文件名,cut命令将默认读取标准输入。1、cut命令的语法总括cut { -b list [-n] | -c list | -f list [-s] [-d character] } [file..]从上面的格式上不难看出,cut命令的使用主要有三种方式,对应三种不同的参数形式,上面已经分别用不同的颜色进行了标注。其中红色的部分是对应按字节剪切,绿色的部分是对应按字符剪切,棕色的部分是对应按字段剪切。这三种方式中,都用到了list参数,下面简单介绍下list参数的几种形式:1,3,5 取1、3、5部分(这里的部分的意思就是字节、字符或字段)2-4,7 取2到4部分和第7部分-5,9 取第1到5部分和第9部分,这里的-5就是1-5的简写。5- 取第5部分和其之后的所有部分下面分别介绍按字节、字符和字段剪切。2、按字节剪切如上面语法中描述的那样,按字节剪切应该使用-b选项。这里要注意-n选项的使用:-n选项和-b选项一起使用,如果某个字符(这里指多字节字符)的最后一个字节落在list指定的范围内的话就将该字符打印,如果没有,就不打印该字符;如果没有-n选项,list指定的范围如果分隔了一个多字节字符,那么就会打印出乱码。下面是几个例子,这里用作例子的文件是一个随便生成的人名列表,名称是data.txt,内容如下:$ cat data.txt aName:aGender:aProfession:aBirthday:aHeight:aEtc.aName:aGender:aProfession:aBirthday:aHeight:aEtc.Abbie Cornishi:female:actor:19820807:1.73m:KlondikeHara Mikie:female:pictorial model:19870703:1.62m:Oscar Promotion Co., Ltd.Drew Barrymore:female:actor:19750222:1.63m:Music and LyricsKobe Bryant:male:NBA player:19780823:1.98m:Los Angeles LakersTimothy Theodore Duncan:male:NBA player:19760425:2.11m:San Antonio SpursTony Parker:male:NBA player:19820517:1.88m:San Antonio SpursManu Ginóbili:male:NBA player:19770728:1.98m:San Antonio SpursLaMarcus Nurae Aldridge:male:NBA player:19850719:2.11m:Portland Trail BlazersaName:aGender:aProfession:aBirthday:aHeight:aEtc.$ 下面按字节剪切该文件:$ cut -b 1-3,16- data.txt aNaProfession:aBirthday:aHeight:aEtc.aNaProfession:aBirthday:aHeight:aEtc.Abbfemale:actor:19820807:1.73m:KlondikeHarle:pictorial model:19870703:1.62m:Oscar Promotion Co., Ltd.Drefemale:actor:19750222:1.63m:Music and LyricsKobe:NBA player:19780823:1.98m:Los Angeles LakersTime Duncan:male:NBA player:19760425:2.11m:San Antonio SpursTone:NBA player:19820517:1.88m:San Antonio SpursManmale:NBA player:19770728:1.98m:San Antonio SpursLaMAldridge:male:NBA player:19850719:2.11m:Portland Trail BlazersaNaProfession:aBirthday:aHeight:aEtc.本来想演示下-n选项的用法,我的Ubuntu的机器上就是不打印乱码,可能和我终端的设置有关系。换了一台centos的机器,下面是例子:$ cat chinese.txt 科比布莱恩特洛杉矶湖人吉诺比利圣安东尼奥马刺$ cut -b 3 chinese.txt ????$ cut -b 3 -n chinese.txt 科洛吉圣$经过这个实验,你知道一个中文字符大约占几个字节了吧。3、按字符剪切按字符剪切比较简单,就是-c选项,下面是例子。$ cut -b 1-4,5 data.txt aNameaNameAbbieHara Drew Kobe TimotTony Manu LaMaraName$ 4、按字段剪切按字段剪切的选项是-f(field)。在使用按字段剪切时,要注意下面的两个选项:-d character 与-f选项一起使用,指定字符作为字段分隔符(默认的字段分隔符是制表符)。注意,要对有特殊shell含义的字符进行转义,比如如果指定空格为字段分隔符,就必须加引号(-d ‘ ’)。注意,character作为字段分隔符,只能是单个字符。-s 取消不包含字段分隔符的行。下面是几个例子:$ cut -f 1,3 -d ' ' data.txt //指定空格为字段分隔符,打印第1,3字段aName:aGender:aProfession:aBirthday:aHeight:aEtc.aName:aGender:aProfession:aBirthday:aHeight:aEtc.AbbieHara model:19870703:1.62m:OscarDrew andKobe player:19780823:1.98m:LosTimothy Duncan:male:NBATony player:19820517:1.88m:SanManu player:19770728:1.98m:SanLaMarcus Aldridge:male:NBAaName:aGender:aProfession:aBirthday:aHeight:aEtc.$ cut -f 1,3 -d ' ' -s data.txt //使用-s选项,忽略没有字段分隔符空格的行,可以看到结果中没有空格的行没有再被输出AbbieHara model:19870703:1.62m:OscarDrew andKobe player:19780823:1.98m:LosTimothy Duncan:male:NBATony player:19820517:1.88m:SanManu player:19770728:1.98m:SanLaMarcus Aldridge:male:NBA$ cut -f 1,3 -d ':' data.txt //指定‘:’为字段分隔符,打印第1、3字段aName:aProfessionaName:aProfessionAbbie Cornishi:actorHara Mikie:pictorial modelDrew Barrymore:actorKobe Bryant:NBA playerTimothy Theodore Duncan:NBA playerTony Parker:NBA playerManu Ginóbili:NBA playerLaMarcus Nurae Aldridge:NBA playeraName:aProfession$ 到这里,cut命令的解释就到此结束了。有什么新的内容,回头遇到了再补充。^_^


(以上内容不代表本站观点。)
---------------------------------
本网站以及域名有仲裁协议。
本網站以及域名有仲裁協議。

2024-Mar-04 02:09pm
栏目列表