【linux】cut的基本使用

发布时间:2023年12月28日

cut主要用于按列切分文本行,并输出指定的字段,这是类unix系统中常用的文本处理工具。

基本使用

首先随便去网上找个文本或者列表文件

如果使用cat看文本的话就是这样的

sh-3.2# cat data.csv 
Name,Age,City,Salary
Alice,30,New York,70000
Bob,25,Los Angeles,55000
Charlie,35,Chicago,80000
Diana,28,Miami,62000
Evan,40,Boston,95000
Fiona,22,Seattle,48000
George,31,San Francisco,73000
Hannah,29,Austin,68000
Ian,27,Denver,60000
Jane,32,Atlanta,71000

-d 指定分隔符

从上面的文本可以看到分隔符是 “,” 所以用-d指定 “,” 的话就能够按照“,”把一行文字分割成4份

但是-d 不直接使用,后面要和-f 等一起配合使用

sh-3.2# cut -d',' data.csv 
usage: cut -b list [-n] [file ...]
       cut -c list [file ...]
       cut -f list [-s] [-w | -d delim] [file ...]

-f 选取列

和awk的$1 $2 $3...一样,cut也提供了选取列的功能?

根据上述的数据,要想选出所有的名字的话就要选择第一列

也就是 -f1

sh-3.2# cut -f1 -d',' data.csv 
Name
Alice
Bob
Charlie
Diana
Evan
Fiona
George
Hannah
Ian
Jane

注意 -d虽然不能直接使用,但是如果不指定-d 参数的话,就会无视掉逗号

sh-3.2# cut -f1 data.csv 
Name,Age,City,Salary
Alice,30,New York,70000
Bob,25,Los Angeles,55000
Charlie,35,Chicago,80000
Diana,28,Miami,62000
Evan,40,Boston,95000
Fiona,22,Seattle,48000
George,31,San Francisco,73000
Hannah,29,Austin,68000
Ian,27,Denver,60000
Jane,32,

还可以提取多列

sh-3.2# cut -d',' -f2-4 data.csv
Age,City,Salary
30,New York,70000
25,Los Angeles,55000
35,Chicago,80000
28,Miami,62000
40,Boston,95000
22,Seattle,48000
31,San Francisco,73000
29,Austin,68000
27,Denver,60000
32,Atlanta,71000

-c 选择提取字符的范围

对于每一行,如果想要提取第几到第几个字符的话可以用-c

比如对于每一行,想要第1到第3个字符就行了

sh-3.2# cut -c1-3 data.csv 
Nam
Ali
Bob
Cha
Dia
Eva
Fio
Geo
Han
Ian
Jan

这里有个不灵活的地方就是不能用 -c 指定字符范围后 再用-f 指定第几列

在cut中 -c 是单独使用的

也就是说,如果想要截取工资这一列的前三位的信息的话,单单使用cut就不够了

cut -f4 -c1-3 data.csv

甚至上面这种写法还是错的

所以可以用awk配合管道把第4列传输给cut作为行

sh-3.2# awk -F, '{print $4}' data.csv 
Salary
70000
55000
80000
62000
95000
48000
73000
68000
60000
71000

然后使用-c 把 从管道传输过来的 “行” 剪切出1-3字符位的部分

sh-3.2# awk -F, '{print $4}' data.csv | cut -c1-3
Sal
700
550
800
620
950
480
730
680
600
710

这样就知道大家工资的前三位了

总的来说cut工具很简单,处理有规律的文本不需要什么正则表达

但是稍微复杂一些的功能就要和其他工具配合使用

文章来源:https://blog.csdn.net/andyshi1998/article/details/135175223
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。