一、基本用法
在Linux或者UNIX中,许多数据都是以文本文件的形式存在。因此,用户经常需要对这些文件进行提取处理。cut的工作就是“剪”,具体来说就是在文件中负责剪切数据用的。一般情况下,提取信息通常是针对一行一行来分析的。
Shell中的cut命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。
cut命令的基本语法如下:
filename 参数是要进行剪切提取的文件,如果不指定filename参数,cut命令将读取标准输入。
注意:cut命令处理的信息是以行为单位的。
|
选项参数 |
说明 |
|
-b |
以字节(byte)为单位截取固定字节区间。 |
|
-c |
以字符(char)为单位截取固定字符区间。 |
|
-d |
分隔符,按照指定分隔符分割列,默认为制表符。 |
|
-f |
与-d一起使用,依据-d的分割字符将一段信息分割成好几段,用-f提取出第几段: 列号,提取第几列。 |
|
--complement |
用于排除所指定的字段。 |
|
--output-delimiter |
更改输出内容的分隔符。 |
|
-n |
该选项和-b一起使用,表示不分割占多个字节的字符。比如说一个汉字占多个字符, 这个汉字是不会分割成多个字节进行截取的。 |
二、常用示例
当我们执行w命令时,会输出类似如下的内容:
如果我们想提取每一行的第4个字节,就可以使用cut进行处理:
-b选项的简单示例
如果我们想提取一下第1,4,11个的字节,那么怎么做呢?继续使用-b选项。
如果我们想稍稍美化一下它的输出,那么怎么做呢?使用--output-delimiter选项。
如果我们想提取一下第1到4,和第11个的字节,那么怎么做呢?继续使用-b选项。
基于上面的例子,我们能否用-c的字符功能提取呢?答案是可以的。
问题:那么-b和-c在什么情况下是不可以的呢?
可能有人已经想到了答案:对中文的处理!-n选项排上用场了😀

其实cut命令我们平时常用的还是-d, -f选项,接下来我们来一起学习一下它们吧。
- -d: 后面接分隔符。用处是将一行数据以什么字符进行分割。
- -f:依据-d的分隔符将一段信息分割成数段,用该选项指定提取出第几段。
说明:
- -d和-f必须一起使用,否则命令将无法正确执行;
- -f后面接的字符分以下几种情况:
|
字符 |
说明 |
|
N |
选取第N段数据输出,从1开始计数。 |
|
N- |
从第N段数据开始直到最后一段。 |
|
N,M |
截取N和M两个字段的数据。 |
|
N-M |
从第N段数据开始直到第M段。 |
|
-M |
从第1段直到M段。 |
我们来看这样的一个例子:查看/etc/passwd文件的不同字段的几种情况。
截取第1列和第7列的数据:
截取第1列到第2列的数据:
截取第1列的数据:
截取从第三个字段(包括第三个字段)以后的数据:
截取从第一个字段开始到第五个字段的数据:
可以通过选项--output-delimiter指定连接的字符:
排除所指定的字段:下面的代码中,打印所有字段,除/etc/passwd文件中的第二个字段:
-cut命令详解(理论+实战)&spm=1001.2101.3001.5002&articleId=140287717&d=1&t=3&u=7e0ca5db1161490ab943d3a8149d7d68)
580

被折叠的 条评论
为什么被折叠?



