cut
命令可用来提取文件中某一列或某些列, 列的定义可以通过字节(bytes, -b)数,字符(character, -c)数,或者字段(field, -f)数, 这三种定义分别对应以下三种选项,使用时必须指定其一:
-b bytes
-c character
-f field
如果不指定的话会报错
cut test.txt
cut: you must specify a list of bytes, characters, or fields
Try 'cut --help' for more information.
单列提取
$cat test.txt
abc 1
bcd 2
cde 3
def 4
efg 5
#提取第二列(字节)
$ cut -c 2 test.txt
b
c
d
e
f
#提取第二列(字符)
$ cut -b 2 test.txt
b
c
d
e
f
#提取第二列(字段)
cut -f 2 -d ' ' test.txt
1
2
3
4
5
注: 使用 -f
时可以通过-d
指定分隔符
多列提取 (以 -b 为例,-c,-f 一样)
可以以 ,
间隔要选取的列,例如 -b 1,3
,也可以通过-指定范围,如-b 1-3
,或是两者组合,-b 1-3,5
当要选取从0到第N列时,可以用 -b -N
,第N列到末尾可以用-b N-
(注:这里的区间全部都为闭区间,即包含起点以及终点的列)
cut -b 1,3 test.txt
ac
bd
ce
df
eg
cut -b 1-3 test.txt
abc
bcd
cde
def
efg
cut -b 1-3,5 test.txt
abc1
bcd2
cde3
def4
efg5
$ cut -b -2 test.txt
ab
bc
cd
de
ef
cut -b 2- test.txt
bc 1
cd 2
de 3
ef 4
fg 5
多文件提取
cut可以同时对多个文件进行提取,输出时纵向连接
$ cat test.txt
abc 1
bcd 2
cde 3
def 4
efg 5
$ cat test2.txt
abc 123
bcd 234
cde 345
$cut -b 2 test.txt test2.txt
b
c
d
e
f
b
c
d