cut命令详解

Linux cut命令

Linux cut命令用于显示每行从开头算起 num1 到 num2 的文字。

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

如果不指定 File 参数,cut 命令将读取标准输入。必须指定 -b、-c 或 -f 标志之一

用法:

cut  [-bn] [file]
cut [-c] [file]
cut [-df] [file]

参数解释:

-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。

-c :以字符为单位进行分割。

-d :自定义分隔符,默认为制表符。

-f :与-d一起使用,指定显示哪个区域。

--complement:补足被选择的字节、字符或字段

-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
        范围之内,该字符将被写出;否则,该字符将被排除。如果存在中文,截取了一个字得一个字节。不加-n报错到文件后会乱码。

-s :不打印不包含分隔符的行

--help:显示指令的帮助信息;

--version:显示指令的版本信息

************************************************************************************************************

cut命令可以将一串字符作为列来显示,字符字段的记法:

N-:从第N个字节、字符、字段到结尾;

N-M:从第N个字节、字符、字段到第M个(包括M在内)字节、字符、字段;

-M:从第1个字节、字符、字段到第M个(包括M在内)字节、字符、字段。

上面是记法,结合下面选项将摸个范围的字节、字符指定为字段:

-b 表示字节;

-c 表示字符;

-f 表示定义字段

实例:

1、当你执行who命令时,会输出类似如下的内容:

$ who
rocrocket :0           2009-01-08 11:07
rocrocket pts/0        2009-01-08 11:23 (:0.0)
rocrocket pts/1        2009-01-08 14:15 (:0.0)

如果我们想提取每一行的第3个字节,就这样:

$ who|cut -b 3
c
c
c

 2、例如有一个学生报表信息,包含No、Name、Mark、Percent:

cat test.txt
No Name Mark Percent
01 tom 69 91
02 jack 71 87
03 alex 68 98

获取前两个字段得信息:

[root@node2 ~]# cut -f1,2 -d" " test.txt 
No Name
01 tom
02 jack
03 alex

获取除了第一个字段外,其它字段得信息。

[root@node2 ~]# cut -f1 -d" " --complement test.txt 
Name Mark Percent
tom 69 91
jack 71 87
alex 68 98

 3、打印字符

打印第1个到第3个字符
cut -c 1-3 test.txt
打印前2个字符
cut -c-2 test.txt
打印从第5个字符开始到结尾
cut -c 5- test.txt
原文地址:https://www.cnblogs.com/jkin/p/10204717.html