cut是一个将文本按列进行切分的小巧工具,也可以指定分隔每列的定界符。在cut的术语中,每列被称为一个字段。
cut基本特性
(1)要提取特定的字段或列,可以使用下面的语法:cut -f FIELD_LIST filenameFILELD_LIST是需要显示的列。它由列号组成,彼此之间用逗号分隔。例如:$ cut -f 2,3 filename这条命令将显示第2列和第3列。(2)cut也能够从stdin 中读取输入文本。
制表符是字段或列的默认定界符。对于没有定界符的行,会将该行照原样打印出来。如果不想打印出这种不包含定界符的行,则可以使用cut 的-s选项。一个cut命令的例子如下:
$ cat student_data.txt
No Name Mark Percent
1 Sarath 45 90
2 Alex 49 98
3 Anu 45 90$ cut -f1 student_data.txt
No
1
2
3(3)提取多个字段$ cut -f2,4 student_data.txt
Name Percent
Sarath 90
Alex 98
Anu 90(4)要打印多列,需要提供一个由逗号分隔的列号列表作为-f 选项的参数(5)也可以用--complement选项对提取的字段进行补集运算。假设有多个字段,你希望打印出除第3列之外的所有列,则可以使用:
$ cut -f3 --complement student_data.txt
No Name Percent
1 Sarath 90
2 Alex 98
3 Anu 90(6)要指定字段的定界符,使用-d选项$ cat delimited_data.txt
No;Name;Mark;Percent
1;Sarath;45;90
2;Alex;49;98
3;Anu;45;90$ cut -f2 -d";" delimited_data.txt
Name
Sarath
Alex
Anucut的其他特性
cut命令有一些选项可以将一串指定的字符作为列来显示。
指定字段的字符或字节范围
假设不依赖定界符,但需要通过将字段定义为一个字符范围(行首记为0)来进行字段提取。这也可以通过cut来实现。
表1
记法 | 范围 |
N- | 从第N个字节,字符或字段到行尾 |
N-M | 从第N个字节,字符或字段到第M个(包括M个在内)字节、字符或字段 |
-M | 第1个字节,字符或字段到第M个(包括M个在内)字节、字符或字段 |
用上面介绍的记法,结合下列选项将字段指定为某个范围内的字节或字符:
- -b表示字节
- -c表示字符
- -f用于定义字段
$ cat range_fields.txt
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz你可以打印第1个到第5个字符:$ cut -c1-5 range_fields.txt
abcde
abcde
abcde
abcde打印前2个字符:cut range_fields.txt -c -2
ab
ab
ab
ab若要用字节作为计数单位,可以将-c替换成-b。在使用-c、-f 和-b时,我们可以指定输出定界符:
--output-delimiter "delimiter string"当用-b或-c提取多个字段时,必须使用--output-delimiter,否则,将无法区分不同的字段。$ cut range_fields.txt -c1-3,6-9 --output-delimiter “,”
abc,fghi
abc,fghi
abc,fghi
abc,fghi
本文介绍了如何使用cut命令处理文本文件,包括提取特定列、指定定界符、处理补集等高级功能。同时,还详细解释了如何通过指定字符范围进行字段提取。
276

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



