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选项指定空格作为分隔符,如下:

image

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

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

作者:|繁华似锦Fighting|,原文链接: https://www.cnblogs.com/liuyuelinfighting/p/16351058.html

文章推荐

Python数据分析--Numpy常用函数介绍(5)--Numpy中的相关性函...

关于基础RMQ——ST算法

如何简单、高效的进行留存和漏斗分析

值得注意的: c++动态库、静态库、弱符号__attribute__((wea...

python 如何在多层循环中使用break/continue

我使用Spring AOP实现了用户操作日志功能

Spring 源码(16)Spring Bean的创建过程(7)属性填充

「Java分享客栈」随时用随时翻:微服务链路追踪之zipkin搭建

软件架构-分布式集中配置中心Spring Cloud Config详解

推荐一款代码依赖包安全漏洞检查插件

vue2.x版本中computed和watch的使用入门详解-watc

软件项目管理 1.3.敏捷项目管理概念