cut命令是从文件中的每一行中截取出一些部分,并输出到标准输出中。
cut命令从一行字符串中以字节,字符,字段截取一部分内容出来
主要两大功能:
显示文件内容
连接多个或多个文件
1、功能说明
用于按列提取文件内容
2、语法格式
cut [选项][文件]
文件:指定要进行内容过滤的文件
3、选项解释
- -b 以字节为单位进行分割
- -n 取消分割多字节字符,与选项
- -b一起使用
- -c 以字符为单位进行分割
- -d 自定义分隔符,默认为制表符”TAB”
- -f 显示指定字段的内容,与-d一起使用
- N 第N个字节、字符或字段
- N- 从第N个字节、字符或字段开始直至行尾
- N-M 从第N到第M(含M)个字节、字符或字段
- -M 从第1到第M(含M)个字节、字符或字段
4、参考实例
以字节为单位进行分割
准备数据:把$PATH中的数据追加到cut.txt
[root@bianchengshe ~]$ echo $PATH
/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin
[root@bianchengshe ~]$ echo $PATH > cut.txt
## 输出cut.txt中第4个字节
[root@bianchengshe ~]$ cut -b 4 cut.txt
t
## 输出cut.txt指定范围内的字节
[root@bianchengshe ~]$ cut -b 4-6 cut.txt
t/h
## 输出cut.txt指定多个范围内的字节,多个逗号隔开
[root@bianchengshe ~]$ cut -b 4-6,7-10 cut.txt
t/homeb
[root@bianchengshe ~]$ cut -b 4-6,9 cut.txt
t/he
## '-'在数字前和后的区别
[root@bianchengshe ~]$ cut -b -4 cut.txt
/opt
[root@bianchengshe ~]$ cut -b 4- cut.txt
t/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin
结论:
-4表示从第一个字节到第4个字节
4-表示从第4个字节到行尾
以字符为单位进行分割
## 输出cut.txt中第4个字节
[root@bianchengshe ~]$ cut -c 4 cut.txt
t
## 输出cut.txt指定范围内的字节
[root@bianchengshe ~]$ cut -c 4-6 cut.txt
t/h
## 输出cut.txt指定多个范围内的字节,多个逗号隔开
[root@bianchengshe ~]$ cut -c 4-6,7-10 cut.txt
t/homeb
[root@bianchengshe ~]$ cut -c 4-6,9 cut.txt
t/he
细心的朋友会发现,上述-b和-c输出都是一样的,那是为什么呢?
因为字母是单字节字符,换成中文就看出区别了
[root@bianchengshe ~]$ echo 'I am chinese 我是中国人' > cut2.txt
[root@bianchengshe ~]$ cut -c 4-16 cut2.txt
m chinese 我是中
[root@bianchengshe ~]$ cut -b 4-16 cut2.txt
m chinese 我
自定义分割符
对上述cut.txt中的数据按":"分区域,分区标注如下:
// 从cut.txt找出第个4路径。
[root@bianchengshe ~]$ cut -d ':' -f 4 cut.txt
/bin
// 从cut.txt找出第2和第4个路径。
[root@bianchengshe ~]$ cut -d ':' -f 2,4 cut.txt
/usr/local/bin:/bin
// 从cut.txt找出第三到最后一个路径。
[root@bianchengshe ~]$ cut -d ':' -f 3- cut.txt
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin
// 从cut.txt找出第一到第三个路径
[root@bianchengshe ~]$ cut -d ':' -f 1-3 cut.txt
/opt/homebrew/bin:/usr/local/bin:/usr/bin
// 从cut.txt找出第一到第三,还有第五个路径
[root@bianchengshe ~]$ cut -d ':' -f 1-3,5 cut.txt
/opt/homebrew/bin:/usr/local/bin:/usr/bin:/usr/sbin
// 显示/etc/passwd的用户和shell
[root@bianchengshe ~]$ cat /etc/passwd | cut -d ':' -f 1,7
nobody:/usr/bin/false
root:/bin/sh
daemon:/usr/bin/false
_uucp:/usr/sbin/uucico
...
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容