1. 命令介绍
cut命令用来显示行中的指定部分,删除文件中指定字段。cut经常用来显示文件的内容。
2. 命令格式、
cut OPTION... [FILE]...
3. 命令功能
其一是用来显示文件的内容,它依次读取由参数file所指明的文件,将它们的内容输出到标准输出上;
其二是连接两个或多个文件,如cut fl f2 > f3
将把文件fl和几的内容合并起来,然后通过输出重定向符“>”的作用,将它们放入文件f3中。
4. 常用选项
选项 | 含义 |
---|---|
-d | 指定字段的分隔符,默认的字段分隔符为“TAB”; |
-f | 显示指定字段的内容; |
--complement | 此选项用于排除所指定的字段。 |
--output-delimiter | 更改输出内容的分隔符。 |
5. 常用实例
- 如何分割文件内容
cut最常用的选项是-d和-f的组合。它基本上会根据特定的分隔符和列出的字段提取内容。
下面的代码仅使用分隔符:打印/etc/passwd文件中每一行的第一个字段。
[root@localhost ~]# cut -d ':' -f 1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
systemd-network
dbus
polkitd
tss
abrt
sshd
postfix
ntp
tcpdump
下面的代码从/etc/passwd文件提取第一和第六个字段:
[root@localhost ~]# cut -d ':' -f 1,6 /etc/passwd
root:/root
bin:/bin
daemon:/sbin
adm:/var/adm
lp:/var/spool/lpd
sync:/sbin
shutdown:/sbin
halt:/sbin
mail:/var/spool/mail
operator:/root
games:/usr/games
ftp:/var/ftp
nobody:/
systemd-network:/
dbus:/
polkitd:/
tss:/dev/null
abrt:/etc/abrt
sshd:/var/empty/sshd
postfix:/var/spool/postfix
ntp:/etc/ntp
tcpdump:/
要显示字段的范围,请指定以 -
分隔的开始字段和结束字段,如下所示:
[root@localhost ~]# cut -d ':' -f 1-4,6,7 /etc/passwd
root:x:0:0:/root:/bin/bash
bin:x:1:1:/bin:/sbin/nologin
daemon:x:2:2:/sbin:/sbin/nologin
adm:x:3:4:/var/adm:/sbin/nologin
lp:x:4:7:/var/spool/lpd:/sbin/nologin
sync:x:5:0:/sbin:/bin/sync
shutdown:x:6:0:/sbin:/sbin/shutdown
halt:x:7:0:/sbin:/sbin/halt
mail:x:8:12:/var/spool/mail:/sbin/nologin
operator:x:11:0:/root:/sbin/nologin
games:x:12:100:/usr/games:/sbin/nologin
ftp:x:14:50:/var/ftp:/sbin/nologin
nobody:x:99:99:/:/sbin/nologin
systemd-network:x:192:192:/:/sbin/nologin
dbus:x:81:81:/:/sbin/nologin
polkitd:x:999:998:/:/sbin/nologin
tss:x:59:59:/dev/null:/sbin/nologin
abrt:x:173:173:/etc/abrt:/sbin/nologin
sshd:x:74:74:/var/empty/sshd:/sbin/nologin
postfix:x:89:89:/var/spool/postfix:/sbin/nologin
ntp:x:38:38:/etc/ntp:/sbin/nologin
tcpdump:x:72:72:/:/sbin/nologin
- 排除所指定的字段
在下面的代码中,打印所有字段,除了 /etc/passwd
文件中的第二个字段密码段:
[root@localhost ~]# cut -d ':' --complement -f 2 /etc/passwd
root:0:0:root:/root:/bin/bash
bin:1:1:bin:/bin:/sbin/nologin
daemon:2:2:daemon:/sbin:/sbin/nologin
adm:3:4:adm:/var/adm:/sbin/nologin
lp:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:5:0:sync:/sbin:/bin/sync
shutdown:6:0:shutdown:/sbin:/sbin/shutdown
halt:7:0:halt:/sbin:/sbin/halt
mail:8:12:mail:/var/spool/mail:/sbin/nologin
operator:11:0:operator:/root:/sbin/nologin
games:12:100:games:/usr/games:/sbin/nologin
ftp:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:99:99:Nobody:/:/sbin/nologin
systemd-network:192:192:systemd Network Management:/:/sbin/nologin
dbus:81:81:System message bus:/:/sbin/nologin
polkitd:999:998:User for polkitd:/:/sbin/nologin
tss:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
abrt:173:173::/etc/abrt:/sbin/nologin
sshd:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:89:89::/var/spool/postfix:/sbin/nologin
ntp:38:38::/etc/ntp:/sbin/nologin
tcpdump:72:72::/:/sbin/nologin
- 如何指定一个输出内容的分隔符
要指定输出分隔符,请使用--output-delimiter选项。输入分隔符由-d选项指定,默认情况下输出分隔符与输入分隔符相同。
先看一下没有使用--output-delimiter选项,是什么样子的:
[root@localhost ~]# cut -d ':' -f 1,7 /etc/passwd
root:/bin/bash
bin:/sbin/nologin
daemon:/sbin/nologin
adm:/sbin/nologin
lp:/sbin/nologin
sync:/bin/sync
shutdown:/sbin/shutdown
halt:/sbin/halt
mail:/sbin/nologin
operator:/sbin/nologin
games:/sbin/nologin
ftp:/sbin/nologin
nobody:/sbin/nologin
systemd-network:/sbin/nologin
dbus:/sbin/nologin
polkitd:/sbin/nologin
tss:/sbin/nologin
abrt:/sbin/nologin
sshd:/sbin/nologin
postfix:/sbin/nologin
ntp:/sbin/nologin
tcpdump:/sbin/nologin
nginx:/sbin/nologin
现在使用--output-delimiter选项,输出分隔符使用’ ‘空格分隔,看一下是什么样子的:
[root@localhost ~]# cut -d ':' -f 1,7 --output-delimiter=' ' /etc/passwd
root /bin/bash
bin /sbin/nologin
daemon /sbin/nologin
adm /sbin/nologin
lp /sbin/nologin
sync /bin/sync
shutdown /sbin/shutdown
halt /sbin/halt
mail /sbin/nologin
operator /sbin/nologin
games /sbin/nologin
ftp /sbin/nologin
nobody /sbin/nologin
systemd-network /sbin/nologin
dbus /sbin/nologin
polkitd /sbin/nologin
tss /sbin/nologin
abrt /sbin/nologin
sshd /sbin/nologin
postfix /sbin/nologin
ntp /sbin/nologin
tcpdump /sbin/nologin
nginx /sbin/nologin
- 指定字段的字符或者字节范围
cut命令可以将一串字符作为列来显示,字符字段的记法:
- N-:从第N个字节、字符、字段到结尾;
- N-M:从第N个字节、字符、字段到第M个(包括M在内)字节、字符、字段;
- -M:从第1个字节、字符、字段到第M个(包括M在内)字节、字符、字段。
上面是记法,结合下面选项将摸个范围的字节、字符指定为字段:
- -b 表示字节;
- -c 表示字符;
- -f 表示定义字段。
文本内容如下
[root@localhost ~]# cat test.txt
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
abcdefghijklmnopqrstuvwxyz
- 打印第一个到第三个字符串
[root@localhost ~]# cut -c 1-3 test.txt
abc
abc
abc
abc
abc
- 打印前2个字符
[root@localhost ~]# cut -c -2 test.txt
ab
ab
ab
ab
ab
- 从第5个字符开始打印
[root@localhost ~]# cut -c 5- test.txt
efghijklmnopqrstuvwxyz
efghijklmnopqrstuvwxyz
efghijklmnopqrstuvwxyz
efghijklmnopqrstuvwxyz
efghijklmnopqrstuvwxyz
网友评论