简介:
cut是一个在linux操作系统中剪字符的工具,可以将一段字段剪切后输出。
基本语法:
cut [-选项] filename
选项:
基础选项
-b:用于指定字节范围,并打印到标准输出
-c:提取指定位置的数据
-d:指定分隔符(默认制表符Tab)
-f:提取指定字段数据。如果不包含分隔符则打印整行(-s下不打印)
-n:与-b一起使用,不分割多字节字符
--complement:补集模式,提取指定字段或者字符位置以外的数据。
-s:不含分隔符的行不打印
--output-delimiter=字符串:可以用来指定‘字段的分隔符’
--help:帮助
--version:版本
关于-b、-c和-f的额外命令参数:
N:从第1个开始数的第N个字节。
N-:从N个开始,到本行末。
N-M:从N到M的字段(要包括M本身)
-M:从第1个开始到M的字段(要包括M本身)
解释一下上面的1和N还有M的意思:就是指第几个数,例如abcd,第1个字符就是a,3-就是从第3个字符c到结尾,即cd。-2就是ab,-3就是abc,2-3就是bc。
具体用法举例:比如我有个文件cps.txt,内容如下
hello
MyNameIsCPS
NiceToMeetYou
命令:cut -b -3 cps.txt
#输出:
hel
MyN
Nic
一些使用案例
cut的-f功能,要看分割符,默认是Tab。
例如下文中我要选第2组数据,那么他一定是被分割符(默认tab)分开的数据
cps cps1 cps2 cps3
如果我-f 2的话,就是cps1。如果我-f 3 的话,就是cps2 cps3了,因为他们之间只有2个空格,对于-f来说,属于同一个数据段(只认分割符来判断数据段)
若你的文件中一个tab都没有,那么你的文件cut -t也只会出来全文,整个全文是一个字段。
提取指定字符
cut -c 1,3,5 cps.txt
每行提取1,3,5的字符并输出。
指定分隔符
cut -d ',' -f 2 cps.txt
指定','为分隔符,打印cps.txt中的每行第二个字段
-s可以只打印包含分隔符的行
cut -s cps.txt
这样就是默认以Tab为分隔符,如果cps.txt中有tab,就会把那行打印出来,多个就打印多行。
cut -d ',' -s cps.txt
修改默认分隔符是',',打印所有包含逗号的行
cut -d ',' -s -f 2 cps.txt
以逗号为分隔,打印所有包含逗号的行中逗号后面那部分(第二个分割的字段),abc,de就打印de。