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