目录
1. 语法
cut [选项] [文件]
1.1. 常用参数
-b:按字节指定列
-c:按字符指定列
-d:指定分隔符
-f:指定分隔符后选择列
-s:不打印没有字段分隔符的行
2. 常见用法
2.1. 按字节分割列
[yt@localhost ~]$ cat file.txt
a中bcd 1234 eee
1a2b 3c4d 99i
输出每行字节数为2的值
cut -b 2 file.txt # 第1行字节为2的是一个中文字符的1/3,所以显示不完整
▒
a
输出每行字节数为5和7的值
cut -b 5,7 file.txt
bd
c
输出每行字节数为5-7的值
cut -b 5-7 file.txt
bcd
3c
注意:不同的编码表示的字节数不一样
编码 UTF8
- 1个中文=3个字节,1个中文符号=3个字节
- 1个英文=1个字节
- 1个数字=1个字节
编码 GBK
- 1个中文=2个字节,1个中文符号=2个字节
- 1个英文=1个字节
- 1个数字=1个字节
2.2. 按字符分割列
[yt@localhost ~]$ cat file.txt
a中bcd 1234 eee
1a2b 3c4d 99i
输出第2个字符
cut -c 2 file.txt
中
a
输出第2和第4个字符
cut -c 2,4 file.txt
中c
ab
输出第2-4个字符
cut -c 2-4 file.txt
中bc
a2b
2.3. 指定分隔符
[yt@localhost ~]$ cat file.txt
a中b,cd 1234 eee
1a2b 3c4d 99i
指定分隔符为逗号
cut -d ',' -f 2 -s file.txt # 打印第2列
cd 1234 eee
指定分隔符为字符串
cut -d 'b' -f 1 -s file.txt # 打印第1列
a中
1a2
指定分隔符为空格(注意:文件中存在多个连续空格时,cut -d 无法过滤)
cut -d ' ' -f 1,3 -s file.txt # 打印第1列和第三列
a中b,cd 1234
1a2b 99i
指定分隔符为空格,过滤多余空格(tr -s ' ')
cat file.txt |tr -s ' ' |cut -d ' ' -f 1-2 # 打印1-2列
a中b,cd 1234
1a2b 3c4d
2.4. 常见用法
指定第2列
cut -d ' ' -f 2 -s file.txt
指定前2列
cut -d ' ' -f -2 -s file.txt
指定2列后面(包含2列)
cut -d ' ' -f 2- -s file.txt
指定2列和5列
cut -d ' ' -f 2,5 -s file.txt
指定2-5列
cut -d ' ' -f 2-5 -s file.txt
不指定第2列
cut -d ' ' -f -1,3- -s file.txt