cut命令是以行为单位,从文本文件或文本流中提取列的
命令格式 cut -b list [-n] [file...] cut -c list [file...] cut -f list [-d delim] [-s] [file...] -b 表示字节 (byte) -c 表示字符 (char) -f 表示字段 (field) -d 表示分割夫 默认为tab -n 具体的数字 list 表示范围 范围是从1开始 -b1-3表示 从1到3个字节
下面举几个例子说明cut的用法
root@ubuntu:~# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh proxy:x:13:13:proxy:/bin:/bin/sh www-data:x:33:33:www-data:/var/www:/bin/sh backup:x:34:34:backup:/var/backups:/bin/sh list:x:38:38:Mailing List Manager:/var/list:/bin/sh irc:x:39:39:ircd:/var/run/ircd:/bin/sh gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh nobody:x:65534:65534:nobody:/nonexistent:/bin/sh libuuid:x:100:101::/var/lib/libuuid:/bin/sh syslog:x:101:102::/home/syslog:/bin/false klog:x:102:103::/home/klog:/bin/false hplip:x:103:7:HPLIP system user,,,:/var/run/hplip:/bin/false avahi-autoipd:x:104:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false gdm:x:105:111:Gnome Display Manager:/var/lib/gdm:/bin/false saned:x:106:113::/home/saned:/bin/false pulse:x:107:114:PulseAudio daemon,,,:/var/run/pulse:/bin/false messagebus:x:108:117::/var/run/dbus:/bin/false polkituser:x:109:118:PolicyKit,,,:/var/run/PolicyKit:/bin/false avahi:x:110:119:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false haldaemon:x:111:120:Hardware abstraction layer,,,:/var/run/hald:/bin/false dengm:x:1000:1000:dengm,,,,:/home/dengm:/bin/bash sshd:x:112:65534::/var/run/sshd:/usr/sbin/nologin mysql:x:113:123:MySQL Server,,,:/var/lib/mysql:/bin/false
/etc/passwd文件 /etc/passwd 是存放用户的地方 格式是这样的 由多个字段组成,且字段之间使用 : 隔开 用户名: 密码 : uid : gid :用户描述:主目录:登陆shell root:x:0:0:root:/root:/bin/bash uid为userid gid为groupid |
现在我想取出所有的用户名
root@ubuntu:~# cut -d: -f 1 /etc/passwd root daemon bin sys sync games man lp mail news uucp proxy www-data backup list irc gnats nobody libuuid syslog klog hplip avahi-autoipd gdm saned pulse messagebus polkituser avahi haldaemon dengm sshd mysql
分割夫是: 取第一个字段
只想取前面八个字符
root@ubuntu:~# cut -c1-8 /etc/passwd |head root:x:0 daemon:x bin:x:2: sys:x:3: sync:x:4 games:x: man:x:6: lp:x:7:7 mail:x:8 news:x:9
head 是显示一个文件的内容的前多少行 默认是10行
head -n file
比如我们显示/etc/profile的前10行内容,应该是:
root@ubuntu# head -n 10 /etc/profile
于之对应的是tail 显示文件内容的最后几行
用法和head相识
cut -b1-8 /etc/passwd |head取出的结果是一样的
或者可以使用范围
cut -c-8 /etc/passwd |head
从第八个字符开始到行的结束
cut c 8 /etc/passed |head
root@ubuntu:~# cut -b 8- /etc/passwd |head 0:0:root:/root:/bin/bash x:1:1:daemon:/usr/sbin:/bin/sh :2:bin:/bin:/bin/sh :3:sys:/dev:/bin/sh 4:65534:sync:/bin:/bin/sync :5:60:games:/usr/games:/bin/sh :12:man:/var/cache/man:/bin/sh 7:lp:/var/spool/lpd:/bin/sh 8:8:mail:/var/mail:/bin/sh 9:9:news:/var/spool/news:/bin/sh
把/etc/passwd文件中的前5位的用户名和该用户的shell输出来
root@ubuntu:~# cut -d: -f 1,7 /etc/passwd |head -n5 root:/bin/bash daemon:/bin/sh bin:/bin/sh sys:/bin/sh sync:/bin/sync
看,结果出来了
http://www.iyouf.info/linux-shell-cut.html