Linux 下 如何使用 cut 命令

本文详细介绍了Linux下cut命令的使用,包括-b、-c、-f等选项,以及如何结合管道进行数据处理。通过实例展示了如何按字节、字符或字段提取文件信息,并给出了一些实际操作示例,如按特定字符分割行、提取指定列等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

cut命令是从文件行中按照 字节、字符或字段来提取需要的信息,各个命令选项的使用说明如下

-b 选项

输出文件指定的字节序号的信息,参数可以指定字节序号列表或者指定字节序号范围
,tab 键和 backspace 键占用一字节

现有用来测试的 a.txt 文件,内容如下:

and ver hao
12      34567 whatsapp
haha yu  j@4567
  • 字节序号列表
    下面的例子是输出 a.txt 每行第1,2,3,4 字节处的字符
[tt@ecs-centos-7 ~]$ cut -b 1,2,3,4 a.txt 
and 
12      3
haha
  • 字节序号范围
    1、下面的例子是输出 a.txt 每行第1-3,4-10 字节处的的字符
[tt@ecs-centos-7 ~]$ cut -b 1-3,4-10 a.txt 
and ver ha
12      34567 w
haha yu  j

2、每行第1字节到第3字节

[tt@ecs-centos-7 ~]$ cut -b -3 a.txt 
and
12
hah

3、每行第2个字节到结尾字节

[tt@ecs-centos-7 ~]$ cut -b 2- a.txt 
nd ver hao
2       34567 whatsapp
aha yu  j@4567

-c 选项

输出文件指定字符序号信息,参数可以是指定字符序号列表,也可以是指定字符序号范围,这个选项适用于每行长度都是固定的文件

  • 字符序号列表
    下面的例子是输出每行第2,3两个字符
[tt@ecs-centos-7 ~]$ cut -c 2,3 a.txt 
nd
2
ah
  • 字符序号范围列表

1、输出第2到第6个字符范围的字符

[tt@ecs-centos-7 ~]$ cut -c 2-6 a.txt 
nd ve
2       345
aha y

2、输出第3到结尾字符范围的字符

[tt@ecs-centos-7 ~]$ cut -c 3- a.txt 
d ver hao
        34567 whatsapp
ha yu  j@4567

3、输出第1到第4个字符范围的字符

[tt@ecs-centos-7 ~]$ cut -c -4 a.txt 
and 
12      3
haha

-f 选项

前面的 -b 和 -c 选项是按照字节或者字符序号的方式来分割文件行的,如果想按照固定 字符 分割每一行的话,就要用到 -d 以及 -f 选项

语法:cut -d "delimiter" -f (field number) a.txt

-d 选项是指定每一行的分隔符,如果没有指定分割服,默认就是tab键

-f 选项是通过 -d 选项分把每一行分割成很多列之后, 提取指定列的数据

1、不使用 -d 选项默认分割符是 tab 键,没有tab 键的行会原样输出,下面的例子第2行有tab,只输出的第二列,其他行都没有tab,所以会原样输出

[tt@ecs-centos-7 ~]$ cut -f 2 a.txt 
and ver hao
34567 whatsapp
haha yu  j@4567

2、使用 -d 选项,下面是以空格作为每行的分割符,下面例子中第二行 123456之间是 tab 所以它们不会被分割开

[tt@ecs-centos-7 ~]$ cut -d " " -f 1 a.txt 
and
12      34567
haha

3、使用 --output-delimiter=‘delimiter’ 可以作为输出列之间的分隔符,下面的例子中以空格作为行分隔符,以@为输出分隔符

tt@ecs-centos-7 ~]$ cut -d " " -f 1,2 --output-delimiter='@' a.txt 
and@ver
12      34567@whatsapp
haha@yu
[tt@ecs-centos-7 ~]$ 

–v 选项

–v 可以查看当前系统中 cut 命令的版本

tt@ecs-centos-7 ~]$ cut --v
cut (GNU coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by David M. Ihnat, David MacKenzie, and Jim Meyering.

结合管道一起使用

cut 可以和管道一起使用,可以处理更多的任务

有 list.txt 内容如下:

[tt@ecs-centos-7 ~]$ cat list.txt 
any,how,what,where
am,fine,keep,mind
hat,cap,oh,thank
good,hi,dog,animal

现在需要把 list.txt 以逗号为分隔符, 前两行,每行前三列提取出来并写入到 c.txt 中,具体的命令如下:

[tt@ecs-centos-7 ~]$ cat list.txt | head -n 2 | cut -d, -f 1,2,3 > c.txt
[tt@ecs-centos-7 ~]$ cat c.txt 
any,how,what
am,fine,keep

上面的例子中先读取 list.txt,然后通过 head -n 2命令获取 list.txt 前两行,再执行cut -d, -f 1,2,3把每行按照逗号分隔并输出前三列,最后通过 >符号把结果重定向到 c.txt 文件中,查看 c.txt 内容,结果正确

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值