Linux命令:提取列 cut

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

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

您正在使用您的 WordPress.com 账号评论。 注销 /  更改 )

Twitter picture

您正在使用您的 Twitter 账号评论。 注销 /  更改 )

Facebook photo

您正在使用您的 Facebook 账号评论。 注销 /  更改 )

Connecting to %s