cut命令可以从文件中提取一个垂直的切片,并打印出指定的列或字段。同sort命令一样,cut命令将空格隔开的单词定义为字段,除非指定了自己的分隔符。而列是指每一行的第n个字符。也就是说,第5列包含了每一个的第5个字符。
下面是文件company.data的内容:
406378:Sales:Itorre:Jan
031762:Marketing:Nasium:Jim
636496:Research:Ancholie:Mel
396082:Sales:Jucacion:Ed
如果要打印每一行的第1-6列,即员工编号,则使用-c1-6选项,如下命令所示:
$ cut -c1-6 company.data
406378
031762
636496
396082
如果只打印每一行的第4列和第8列,即编号的第4个字符和部门的第一个字符,则使用-c4:8选项,如下命令所示:
$ cut -c4,8 company.data
3S
7M
4R
0S
鉴于文件的各个字段用冒号隔开,可以通过-d:和-f3选项来提取名字列,如下:
$ cut -d: -f3 company.data
Itorre
Nasium
Ancholie
Jucacion
通常我们使用空格作为分隔符。这种情况下,需要把分隔符放在单引号里面,如:-d' '
另外,如果想提取从一个起点到行尾,则只要省去后面的字段数字即可,如下面的例子所示。
假如有一个文件test.data:
abc def ghi jkl
mno pqr stu vwx
yz1 234 567 890
要提取从第2个字字段到行尾,则写法是:cut -d' ' -f2- test.data
结果是:
def ghi jkl
pqr stu vwx
234 567 890
下面是cut命令常用选项的总结:
-c[n|n,m|n-m] 指定一列,多列(用逗号隔开),列区间(用破折号隔开)
-f[n|n,m|n-m] 指定一个字段,多个字段(用逗号隔开),字段区间(用破折号隔开)
-dc 指定字段分隔符
-s 不显示不含分隔符的行