Shell基础中,如何使用cut命令高效提取列数据?

2026-05-05 17:452阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1381个文字,预计阅读时间需要6分钟。

Shell基础中,如何使用cut命令高效提取列数据?

目录

1.cut命令说明

2.cut命令练习(1)cut命令基本用法

3.cut命令练习(2)cut命令选择多列

4.cut命令练习(3)按字符进行提取

5.cut命令练习(4)按指定分隔符进行截取

3.cut命令分隔符说明

1.cut命令说明

2.cut命令基本用法说明

3.cut命令-选项说明

目录
  • 1、cut命令说明
  • 2、cut命令练习
    • (1)cut命令基本用法
    • (2)cut命令选取多列
    • (3)按字符来进行提取
    • (4)按指定分隔符进行截取数据
  • 3、cut命令分隔符说明

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

Shell基础中,如何使用cut命令高效提取列数据?

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

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

总结一下:

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

本文共计1381个文字,预计阅读时间需要6分钟。

Shell基础中,如何使用cut命令高效提取列数据?

目录

1.cut命令说明

2.cut命令练习(1)cut命令基本用法

3.cut命令练习(2)cut命令选择多列

4.cut命令练习(3)按字符进行提取

5.cut命令练习(4)按指定分隔符进行截取

3.cut命令分隔符说明

1.cut命令说明

2.cut命令基本用法说明

3.cut命令-选项说明

目录
  • 1、cut命令说明
  • 2、cut命令练习
    • (1)cut命令基本用法
    • (2)cut命令选取多列
    • (3)按字符来进行提取
    • (4)按指定分隔符进行截取数据
  • 3、cut命令分隔符说明

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

Shell基础中,如何使用cut命令高效提取列数据?

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

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

总结一下:

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