cut
与全文浏览工具cat不同,也与head,tail这些取文本中的列的命令不同。
cut命令用来取文本中的列。
[03:19:05 root@C8-3-55 ~]#cut --help
用法:cut [选项]... [文件]...
Print selected parts of lines from each FILE to standard output.
如果没有指定文件,或者文件为"-",则从标准输入读取。
必选参数对长短选项同时适用。
-b, --bytes=列表 只选中指定的这些字节
-c, --characters=列表 只选中指定的这些字符
-d, --delimiter=分界符 使用指定分界符代替制表符作为区域分界
-f, --fields=LIST select only these fields; also print any line
that contains no delimiter character, unless
the -s option is specified
-n with -b: don't split multibyte characters
--complement 补全选中的字节、字符或域
-s, --only-delimited 不打印没有包含分界符的行
--output-delimiter=字符串 使用指定的字符串作为输出分界符,默认采用输入
的分界符
-z, --zero-terminated 以 NUL 字符而非换行符作为行尾分隔符
--help 显示此帮助信息并退出
--version 显示版本信息并退出
仅使用f -b, -c 或-f 中的一个。每一个列表都是专门为一个类别作出的,或者您可以用逗号隔
开要同时显示的不同类别。您的输入顺序将作为读取顺序,每个仅能输入一次。
Each range is one of:
N N'th byte, character or field, counted from 1
N- from N'th byte, character or field, to end of line
N-M from N'th to M'th (included) byte, character or field
-M from first to M'th (included) byte, character or field
用cut命令-d选项将想要的内容从文本中过滤出来
例:用cut命令取出passwd中的用户名和uid
- -d: 以 : 做为列的分隔符
- -f 1,3 分别取第1和第3列
cut: 分界符必须是单个字符
[03:25:10 root@C8-3-55 ~]#head -n 5 /etc/passwd | cut -d: -f 1,3
root:0
bin:1
daemon:2
adm:3
lp:4
利用 cut -d 取出磁盘使用率的值,方便以后磁盘报警。
- tr -s ' ' % 将空格替换成%
- cut -d % -f 5 以%为分隔符的列取第五列
- tail -n +2 显示从第二行开始的内容
[03:39:35 root@C8-3-55 ~]#df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 886M 0 886M 0% /dev
tmpfs 903M 0 903M 0% /dev/shm
tmpfs 903M 17M 886M 2% /run
tmpfs 903M 0 903M 0% /sys/fs/cgroup
/dev/mapper/cl-root 17G 3.4G 14G 20% /
/dev/sda1 976M 139M 771M 16% /boot
tmpfs 181M 0 181M 0% /run/user/0
[03:41:07 root@C8-3-55 ~]#df -h | tr -s ' ' % | cut -d % -f 5 |tail -n +2
0
0
2
0
20
16
0
cut命令-c选项用字符来分割
例:利用cut -c 取出磁盘可用空间
- -c 22-25 22到25列的范围内容
[03:36:45 root@C8-3-55 ~]#df -h
文件系统 容量 已用 可用 已用% 挂载点
devtmpfs 886M 0 886M 0% /dev
tmpfs 903M 0 903M 0% /dev/shm
tmpfs 903M 17M 886M 2% /run
tmpfs 903M 0 903M 0% /sys/fs/cgroup
/dev/mapper/cl-root 17G 3.4G 14G 20% /
/dev/sda1 976M 139M 771M 16% /boot
tmpfs 181M 0 181M 0% /run/user/0
[03:39:20 root@C8-3-55 ~]#df -h | cut -c 22-25
已用
886M
903M
903M
903M
17G
976M
181M
利用--output-delimiter选项可以替换列间分割符
例:计算1连加到100和1连乘到10
[03:51:42 root@C8-3-55 ~]#echo {1..100} | cut -d ' ' -f 1-100 --output-delimiter="+"| bc
5050
[03:45:41 root@C8-3-55 ~]#echo {1..10} | cut -d ' ' -f 1-10 --output-delimiter="*"
1*2*3*4*5*6*7*8*9*10
[03:50:15 root@C8-3-55 ~]#echo {1..10} | cut -d ' ' -f 1-10 --output-delimiter="*"| bc
3628800
检查以下,计算正确
[03:55:08 root@C8-3-55 ~]#seq -s + 100
1+2+3+4+5+6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+26+27+28+29+30+31+32+33+34+35+36+37+38+39+40+41+42+43+44+45+46+47+48+49+50+51+52+53+54+55+56+57+58+59+60+61+62+63+64+65+66+67+68+69+70+71+72+73+74+75+76+77+78+79+80+81+82+83+84+85+86+87+88+89+90+91+92+93+94+95+96+97+98+99+100
[03:55:39 root@C8-3-55 ~]#seq -s + 100 | bc
5050
[03:56:13 root@C8-3-55 ~]#seq -s '*' 10
1*2*3*4*5*6*7*8*9*10
[03:56:30 root@C8-3-55 ~]#seq -s '*' 10 | bc
3628800