1、cut命令说明

cut命令的作用是对文本中的内容进行截取。

一个文件里边有很多数据,grep命令是用来提取文本内容包含匹配规则的行,而cut命令是用来截取文本内容中的列数据。

[root@localhost ~]# cut [选项] 文件名

选项:
-f 列号:提取第几列。
-d 分隔符:按照指定分隔符分割列,默认分隔符是制表符(tab键)。
-c 字符范围:不依赖分隔符来区分列,而是通过字符范围(行首为0)来进行字段提取。
“n-”表示截取所有行从第n个字符到行尾;
“n-m”表示截取所有行从第n个字符到第m个字符;
“-m”表示截取所有行从第1个字符到第m个字符。

2、cut命令练习

使用如下文本:

ID      Name    Gender  Mark
1 Tangs M 88
2 Sunwk M 99
3 Zhubj M 77
4 Shahs M 66

(1)cut命令基本用法

使用cut命令提取student.txt文本中的第二列信息。

# 提取文本中第二列内容
[root@localhost tmp]# cut -f 2 student.txt
Name
Tangs
Sunwk
Zhubj
Shahs

如果只需要第二列信息,且不需要标题,就需要结合前边说的grep命令一起使用了。

[root@localhost tmp]# grep -v "Name" student.txt | cut -f 2
Tangs
Sunwk
Zhubj
Shahs

(2)cut命令选取多列

如果想要提取文本中多列数据,只要将列号直接用,(逗号)分开即可,命令如下:

[root@localhost tmp]# cut -f 2,4 student.txt
Name Mark
Tangs 88
Sunwk 99
Zhubj 77
Shahs 66

(3)按字符来进行提取

cut命令可以按照字符进行提取,需要注意8-代表的是提取所有行的第十个字符开始到行尾,而

10-20代表提取所有行的第10个字符到第20个字符,而-8代表提取所有行从行首到第8个字符。

[root@localhost tmp]# cut -c -6 student.txt
ID Nam
1 Tang
2 Sunw
3 Zh
4 Shah

注意:在实际工作中,这种方式很难提取出合理的数据信息,除非格式非常的规律,因为每行的字符个数不相等,截取出来的内容会不完整。

(4)按指定分隔符进行截取数据

例如:以:作为分隔符,提取/etc/passwd文件中,普通用户的第一列和第三列数据信息。

需要先过滤掉伪用户和root用户,在切割提取。

# 过滤伪用户
# grep "/bin/bash" /etc/passwd # 过滤root用户
# grep -v "root" /etc/passwd # 执行命令
[root@localhost tmp]# grep "/bin/bash" /etc/passwd | grep -v "root" | cut -d ":" -f 1,3
user1:500
user2:501

之后我们就可以把这些提取出来的数据,传入变量中,然后该变量就可以在程序中进行操作了。

3、cut命令分隔符说明

cut命令默认分隔符是制表符(tab键),而不是使用空格来进行分隔,因为cut命令不识别空格作为分隔符。

如果有特定的符号,也是可以用-d选项进行指定做为分隔符。

而空格不推荐作为cut命令的分隔符。

如查看磁盘情况的df命令:

[root@192 localhost]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 2.1G 16G 12% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 240M 34M 194M 15% /boot

这个命令中间的分隔就是空格。

如我们通过cut命令获取二列信息,如下:

[root@192 localhost]# df -h | cut -f 2
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 19G 2.1G 16G 12% /
tmpfs 491M 0 491M 0% /dev/shm
/dev/sda1 240M 34M 194M 15% /boot

我们看到cut命令默认是不识别空格作为分隔符的。

如果我们用-d选项指定空格作为分隔符,如下:

可以看到获取的是一列空格,也非常的不好用。

所以不推荐空格作为cut命令的分隔符。

总结一下:

  • cut命令的默认分隔符是制表符,也就是tab键,对空格作为分隔符是支持的,但是不怎么好用,不推荐使用。
  • 如果需要用空格来截取文本数据,可以用后边讲的awk来进行截取。

最新文章

  1. Android常见的控件
  2. xUtils 1.8.4 (Android工具库) 发布 - http模块优化
  3. jquery选择器之内容选择器
  4. MSBUID相关(笔记)
  5. WPF中的StackPanel、WrapPanel、DockPanel
  6. python实现中文图片文字识别--OCR about chinese text--tesseract
  7. boost::signals::signal的使用方法
  8. 01_Python简介
  9. 使用GitHub+hexo搭建个人独立博客
  10. 学号:201621123032 《Java程序设计》第11周学习总结
  11. RMQPOJ3264
  12. android 开发 Intent使用技巧点
  13. MySQL MySql连接数与线程池
  14. vue 实现聊天框滚动到底
  15. Jmeter遇到Connection reset by peer的解决方法
  16. .net MVC 单页面 多个(行)数据修改
  17. Java应用开发的一条重要经验:先建立基础设施
  18. oracle查询在当前数据库下当前用户拥有的表语句
  19. 理解unittest(六)
  20. Linux下多任务间通信和同步-mmap共享内存

热门文章

  1. mixin和composition api
  2. vue在移动端的自适应布局
  3. SSM实现个人博客-day03
  4. drf认证、权限、限流
  5. 另类终端「GitHub 热点速览 v.22.15」
  6. v-if 和 v-show 的区别
  7. BUUCTF-Web:[GXYCTF2019]Ping Ping Ping
  8. 论文解读(SUBG-CON)《Sub-graph Contrast for Scalable Self-Supervised Graph Representation Learning》
  9. 在windows上安装elasticsearch7.6
  10. vue - vue基础/vue核心内容(终结篇)