cut 和 awk 用法
一、cut
cut 侧重于对内容进行列切割
- -d 后面的是分割符,表示用什么符号来分割符来分割列,分隔符使用引号括起来
- -f 后面跟着要选择的字段列,从1开始,表示第一列,如果要多列,可以用逗号分隔 ,可以使用start-end表示一个区间,解决使用逗号的烦恼。
- -c 参数后面跟着要选择的字符偏移
- -b 表示后面跟着要选择的字节偏移
实例演示:
# 实例文本
[root@localhost wangzy]# cat test.txt
aaa;bbb;ccc;ddd;eee
fff;ggg;hhh
iii;jjj;kkk;lll;mmm;nnn
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
# -d 分隔符用引号括起来
[root@localhost wangzy]# cut -f 2,3 -d ";" test.txt
bbb;ccc
ggg;hhh
jjj;kkk
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
# 2-3 效果同 2,3效果一样。
[root@localhost wangzy]# cut -f 2-3 -d ";" test.txt
bbb;ccc
ggg;hhh
jjj;kkk
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
# 以 冒号 为分隔符
[root@localhost wangzy]# cut -f 7 -d ":" test.txt
aaa;bbb;ccc;ddd;eee
fff;ggg;hhh
iii;jjj;kkk;lll;mmm;nnn
/bin/bash
/sbin/nologin
/sbin/nologin
/sbin/nologin
[root@localhost wangzy]#
注意:-d只能和-f一起配合使用,-c不能和-d一起使用,只能单独使用。想一想就很容易明白嘛,-d表示指定分隔符,而-c表示指定区间的字符,不需要分割。
二、awk
awk 擅长取列
- awk用来处理文本和数据,功能很强大,如果是一些简单的操作,可以使用cut命令来实现
- -F 后面加上分隔符 ,建议空格分开后,使用引号将分隔符括起来,不加-F时,默认是以空格分隔。$0表示整行数据,$1表示第1个字段
用法
用法:awk [options] ‘{print NR,$0}’ file -F 指定字段分隔符 NR 表示行号 $0 表示这一行的内容 $1 数字 某一列 $NF 最后一列
实例演示
# 实例参考
[root@localhost wangzy]# 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
# 获取第5列 [root@localhost wangzy]# cat test.txt |awk -F ":" '{print $5}' root bin daemon adm
# 添加参数 [root@localhost wangzy]# cat test.txt |awk -F ":" '{print $1"=>"$2}' root=>x bin=>x daemon=>x adm=>x [root@localhost wangzy]#