一、命令介绍
Linux cut命令将行按指定的分隔符分割成多列。cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一。cut分隔符必须是单个字符。
二、使用示例
以/etc/password文件和2.log文件为例为例进行验证
[root@test1 tmp]# cat 2.log
序号 企业名称 公网IP地址
1 国海证券 113.16.174.228
2 平安证券 211.157.16.114
3 兴业证券 61.154.12.206
[root@test1 tmp]# cp /etc/passwd 3.log
只保留5行作为测试数据
[root@test1 tmp]# sed -n ‘1,5p’ 3.log > 4.log
1、打印第1-3字符
[root@test1 tmp]# cut -c 1-3 4.log
roo
bin
dae
adm
lp:
2、显示指定字段
[root@test1 tmp]# cut -f2 2.log
企业名称
国海证券
平安证券
兴业证券
3、指定:号分隔符,显示第一列
[root@test1 tmp]# cut -d":" -f1 4.log
root
bin
daemon
adm
lp
4、指定分隔符,显示多列
[root@test1 tmp]# cut -d":" -f1,5 4.log
root:root
bin:bin
daemon:daemon
adm:adm
lp:lp
5、打印指定列取反结果
[root@test1 tmp]# cut -d":" -f1,5 --complement 4.log
x:0:0:/root:/bin/bash
x:1:1:/bin:/sbin/nologin
x:2:2:/sbin:/sbin/nologin
x:3:4:/var/adm:/sbin/nologin
x:4:7:/var/spool/lpd:/sbin/nologin
6、打印第4个字节至行尾
-n参数意思为不要分割多字节字符
[root@test1 tmp]# cut -nb 4- 2.log
企业名称 公网IP地址
海证券 113.16.174.228
安证券 211.157.16.114
业证券 61.154.12.206
7、打印第1个字符到第M个字符
[root@test1 tmp]# cut -c -4 2.log
序号 企
1 国海
2 平安
3 兴业
三、参数说明
- -b、 --bytes=LIST 仅选择这些字节
- -c、 --characters=LIST 仅选择这些字符
- -d、 --delimiter=DELIM 使用DELIM而不是TAB作为字段分隔符
- -f、 --fields=列表仅选择这些字段;同时打印任何行不包含分隔符的,除非指定了-s选项
- -n with -b:不拆分多字节字符
- ----complement 补码所选字节、字符的集合、或字段
- -s、 --仅限分隔符不打印不包含分隔符的行
- –output delimiter=STRING 使用字符串作为输出分隔符,默认值是使用输入分隔符
- –help 显示此帮助并退出
- –version 输出版本信息并退出
- N 第N个字节、字符或字段,从1开始计算
- N- 从第N个字节、字符或字段到行尾
- N-M 从第N个到第M个(包括)字节、字符或字段
- -M 从第一个字节到第M个(包括)字节、字符或字段