cut 命令类似sed命令一样(sed基础,sed进阶),也是以行为基本的处理单位;该命令必须指定选项,从文件的每一行剪切字节、字符或字段并将这些字节、字符或字段写至标准输出。
命令用法:
cut -b list [-n] [file ...]
cut -c list [file ...]
cut -f list [-s] [-d delim] [file ...]
选项简介:
- b:以字节为单位进行分隔,使用n指定不要将多字节字符拆开
- c:以字符为单位进行分割
- d:自定义分隔符,可以使用f指定显示哪个分隔段
示例一、b选项的使用
测试文件数据
% cat test.txt
daemon:x:2:2:daemon:/sbin:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
以字节为单位,输出第二个字节数据(显示每一行文本的第二个字节)
% cut -b 2 test.txt
a
b
t
a
以字节为单位,输出2-5个字节数据
% cut -b 2-5 test.txt
aemo
bus:
tp:x
ames
以字节为单位,输出1,2,3字节数据
% cut -b 1,2,3 test.txt
dae
dbu
ftp
gam
测试中文数据
% cat t.txt
刘德华
张学友
郭富城
黎明
以字节为单位,输出乱码
% cut -b 2 t.txt
�
�
�
�
以字节为单位,n指定不要将多字节字符分开
% cut -nb 2 t.txt
刘
张
郭
黎
示例二、c选项的使用
c选项以字符为单位进行分隔,而b选项只以字节(8位二进制位)来分隔,所以处理中文时,会显示成乱码。
测试文件数据
% cat t.txt
刘德华
张学友
郭富城
黎明
-c选项是以字符为分隔单位
% cut -c 3 t.txt
华
友
城
取1和3两个字符
% cut -c1,3 t.txt
刘华
张友
郭城
黎
示例三、d选项的使用
测试数据
% cat test.txt
daemon:x:2:2:daemon:/sbin:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
d指定:分隔,-f 1指定输出第一段(以冒号:为分隔符,输出分割后的第一段)
% cut -d : -f 1 test.txt
daemon
dbus
ftp
games
一种更紧凑的写法
% cut -d':' -f1,7 test.txt
daemon:/sbin/nologin
dbus:/sbin/nologin
ftp:/sbin/nologin
games:/sbin/nologin
通过示例其实我们也可以发现,cut适合处理单字符分隔的内容,如果是多个字符分隔的内容,cut其实处理起来就没有那么方便了。