Shell好用的工具: cut

97 阅读3分钟

介绍

cut 译为“剪切, 切割” , 是一个强大文本处理工具,它可以将文本按列进行划分的文本处理。cut命令逐行读入文本,然后按列划分字段并进行提取、输出等操作。

语法

cut [options]  filename

options参数说明

选项参数功能
-f 提取范围列号,获取第几列
-d 自定义分隔符自定义分隔符,默认为制表符。
-c 提取范围以字符为单位进行分割
-b 提取范围以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-n与“-b”选项连用,不分割多字节字符;

提取范围说明

提取范围说明
n-提取指定第n列或字符或字节后面所有数据
n-m提取指定第n列或字符或字节到第m列或字符或字节中间的所有数据
-m提取指定第m列或字符或字节前面所有数据
n1,n2,...提前指定枚举列的所有数据

示例:切割提取指定列数据

cut1.txt文件数据准备

touch cut1.txt

编辑文件添加内容

AA  itheima 11 XX
BB  itcast 22 XXX
CC  Shell 33 XXXX
DD  it 44 XXXXXXX

提取文件中第一列数据

cut cut1.txt -d " " -f 1

image.png

提取文件中第一列,第三列, 枚举查找

cut cut1.txt -d " " -f 1,3

image.png

提取文件中第二列,第三列,第四列, 范围查找

image.png

提取文件中第一列后面所有列的数据

 cut cut1.txt -d " "  -f 2- 

image.png

提起文件中结束列前面所有列的数据

cut -d " " -f -2 cut1.txt
# -2 提取指定列前面所有列数据

运行效果

image.png

示例: 切割提取指定字符数据

提取每行前3个字符

cut cut1.txt -c1-3

运行效果

image.png

提取每行第4个字符以后的数据

cut cut1.txt -c 4-

运行效果

image.png

提取每行第3个字符前面所有字符

cut cut1.txt -c -3

运行效果

image.png

示例:切割提取指定字节数据

提取字符串"abc传智播客" 前3个字节

echo "abc传智播客" | cut -b -3

运行效果

image.png

提取字符串"abc传智播客" 前4个字节

echo "abc传智播客" | cut -b -4

运行效果

image.png

提取字符串"abc传智播客" 前6个字节

echo "abc传智播客" | cut -b -6
# 由于linux系统默认utf-8码表, 所以一个汉字占3个字节

运行效果

image.png

提取字符串"abc传智播客" 前4个字节, 就可以将汉字 "传"输出,

echo "abc传智播客" | cut -nb -4
#  -n 取消多字节字符分割直接输出

运行效果

image.png

示例:切割提取指定单词数据

在cut1.txt文件中切割出"itheima"

cat cut1.txt | grep itheima | cut -d " " -f 2

image.png

示例:切割提取bash进程的PID号

命令

ps -aux | grep 'bash' | head -n 1 | cut -d " " -f 8

运行效果

image.png

示例:切割提取IP地址

ifconfig | grep broadcast | cut -d " " -f 10

运行效果 image.png

小结

cut的作用

一个强大文本处理工具,它可以将文本按列进行划分的文本处理。cut命令逐行读入文本,然后按列划分字段并进行提取、输出等操作。

cut切割提取列

cut 文件或数据 -d 分隔符切割 -f 提取第X列

cut切割提取字符

cut 文件或数据 -c 提取字符范围

cut切割提取字节

cut 文件或数据 -nb 提取直接范围