1
cut 是用来截取文件或标准输入每行的某部分的。

使用 cut 的时候必须指定下面三个选项的其中一个:

-b byte-list 根据字节截取
-c character-list 根据字符截取
-f field-list 根据段来就截取

上面的三个参数 byte-list character-list field-list 是用逗号隔开的一个或多个数字和范围组成(用-连接的范围)。字节、字符和段的其实位置都是1,也可以不给出完成的范围:-m等同于 1-m; n-等同于 n 到行尾。

例如要截取标准输入行的2-5间的字符

$ cut -b2-5
abcdefg #这里是标准输入
bcde

截取1-3间的字符和第5个字符

$ cut -c1-3,5
abcdefg
abce

当然也可以截取文件中的每一行

$ cat cut.txt
James    23
Kobe    24
Wade    3

$ cut -c1-5 cut.txt
James
Kobe
Wade

截取,这里的是指每行用tab制表符(默认)分隔的段。例如我们要截取第二个段

$ cat cut.txt
James    23
Kobe    24
Wade    3

$ cut -f2 cut.txt
23
24
3

也可以指定分隔符,使用 -d 选项

$ cat cut.txt
James,23
Kobe,24
Wade,3

$ cut -d, -f1 cut.txt  # 指定分隔符 ,
James
Kobe
Wade

当行中没有指定的分隔符时,可以使用 -s 选项来忽略处理此行

$ cat cut.txt
James,23
Kobe,24
Wade,3
NBA ALL STAR

# 不使用 -s
$ cut -d, -f1 cut.txt
James
Kobe
Wade
NBA ALL STAR

# 使用 -s
$ cut -d, -f1 -s cut.txt
James
Kobe
Wade

cut 往往在脚本中与管道结合起来使用是很方便的,例如要获取一个文件有多少行

$ wc -l config.json
7 config.json
# 如果只想要数字就可以这样写
$ wc -l config.json | cut -d' ' -f1
7

参考:GNU coreutils cut-invocation


Simeone_xu
1.3k 声望14 粉丝

一个爱看球的程序员