迹忆博客
当前位置: 主页 > 学无止境 > 操作系统 > 文章

Linux提取命令cut

发布时间: 2016-09-23 作者: 迹忆 浏览次数:

cut命令属于管道命令家族中的一员。cut属于提取命令,将一段数据经过分析后提取出我们想要的那些数据。一般情况下提取信息通常是针对一行一行来分析的。cut的意思就是切,没错这个命令的用处就是将一段信息给它切出来。其处理的信息是以行为单位的。下面我们来看cut命令的用法。

# cut [选项]…

关于cut命令的选项,我们分组来说明。

选项一

-d : 后面接分割字符。用处是将一行数据以什么字符分割。
-f : 依据-d的分隔符将一段信息分割成数段,用该选项指定取出第几段。

说明:1. –d 和 –f 必须一起使用,否则命令将无法正确执行;

2. –f 后面接的字符分一下几种情况

N  选取第N段数据输出,从1开始计数;
N-  从第N段数据开始直至最后一段;
N,M 截取N和M两个字段的数据
N-M 从第N段数据开始直到第M段;
-M  从第1段直到M段;

我们来看这样的一个例子:查看/etc/passwd 文件的不同字段的几种情况。

# cat /etc/passwd | cut –d ‘:’ –f 3,5  //截取第三和第五个字段的数据
# cat /etc/passwd | cut –d ‘:’ –f 3-5  //截取第三到第五个字段的数据
# cat /etc/passwd | cut –d ‘:’ –f 3    //截取第三个字段的数据
# cat /etc/passwd | cut –d ‘:’ –f 3-   //截取从第三个字段(包括第三个字段)以后的数据
# cat /etc/passwd | cut –d ‘:’ –f -5   //截取从第一个字段开始到第五个字段的数据

这里我们说明一下,在对截取的数据显示的时候,各段数据之间默认用-d 指定的字符进行连接

0:root
1:bin

我们可以通过选项—output-delimiter指定连接的字符

# cat /etc/passwd | cut –d ‘:’ –f 3,5 –output-delimiter=’;’
0;root
1;bin

这里还有一个选项需要注意:--only-delimited 这表示只显示带有-d指定字符的行。什么意思呢?就是说,我们使用-d指定了字符’0’作为分隔符,但是有的数据没有’0’,默认情况下没有’0’的数据也是会显示的。如果我们不想让其显示可以使用—only-delimited。

# cat /etc/passwd | wc –l
31  //该文件有31行数据
# cat /etc/passwd | cut –d ‘0’ –f 3,5 | wc –l
31  //结果同样有31行,但是我们查看该文件内容发现有的行并没有’0’
# cat /etc/passwd | cut –d ‘0’ –f 3,5 –only-delimited | wc –l
10  //结果就只剩下10行,这10行数据就都是含有’0’的我们想要的数据了

选项二

-c 以字符(char)为单位截取固定字符区间
-b 以字节(byte)为单位截取固定字节区间
-n 该选项和-b一起使用,表示不分割占多个字节的字符。比如说一个汉字占多个字符,这个汉字是不会分割成多个字节进行截取的。

说明:1. -b和-c不能同时使用

2. -c 和 –b后面指定的数字和-f的相同

看下面的例子

# cat /etc/passwd | cut –c 12- //截取12个字符以后的字符串
# cat /etc/passwd | cut –bn 12- //截取12个字节以后的所有字节的字符

cut 主要的用途在于将同一行里面的数据进行分解,最常使用在分析一些数据或文字数据的时候。

关于cut的用法我们就介绍这么多。希望本文对大家有所帮助。

除非注明转载,本站文章均为原创,欢迎转载,转载请以链接形式注明出处

本文地址: