Cut 命令是常用的 Linux 命令,在这里总结一下平时常用的参数和用法,方便查证。
常用参数:
-b:以字节为单位进行分割;
-c:以字符为单位进行分割;
-d:自定义分割符进行分割,默认为制表符;
-f:一般与 -d 一起使用,指定区域;
-n:一般与 -b 一起使用,取消分割多字节字符;
举个栗子,先生成一个测试模板
[dmdba@192 gs_bash]$ cat /etc/passwd |head -n 10 > test.txt [dmdba@192 gs_bash]$ cat test.txt root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
按照字节截取,其中 -4 代表从第一个字节到第四个字节(4- 就代表第四个字节到最后一个字节),可以截取多个范围的字节,以逗号隔开。
[dmdba@192 gs_bash]$ cut -b -4,10-12 test.txt root0:r bin::bi daem2:2 adm::ad lp:xlp: sync0:s shutx:6 halt0:h mail12: uucp:14
我建个临时文件,里面用制表符(tab) 与空格做了一行数据。
[dmdba@192 gs_bash]$ cat a.log 1 2 3 4 [dmdba@192 gs_bash]$ sed -n l a.log 1\t2 3 4$
当我用制表符分割时,因为是默认的,所以不用添加 -d 参数,添加了反而会报错,如果用一个空格来分割,则要加。
[dmdba@192 gs_bash]$ cat a.log 1 2 3 4 [dmdba@192 gs_bash]$ cut -d -f1 a.log cut: the delimiter must be a single character Try `cut --help' for more information. [dmdba@192 gs_bash]$ cut -f1 a.log 1 [dmdba@192 gs_bash]$ cut -d' ' -f1 a.log 1 2