您的位置:首页 > 运维架构 > Shell

shell入门-awk-1

2015-11-19 00:15 579 查看
awk对于sed grep的优势在于分段,把分隔符分割成一小段一小段,针对段进行匹配,替换,操作,逻辑判断,比较...等

awk的基本操作

[root@wangshaojun ~]# awk -F ':' '{print $3}' 1.txt //// -F 指定分隔符 $3 就是第三段
0
1
2
3

.....

指定多个段

[root@wangshaojun ~]# awk -F ':' '{print $3,$4,$1}' 1.txt
0 0 root
1 1 bin
2 2 daemon
3 4 adm
4 7 lp

.....

指定显示指定的分隔符

[root@wangshaojun ~]# awk -F ":" 'OFS=":" {print $3,$4,$1}' 1.txt
0:0:root
1:1:bin
2:2:daemon
3:4:adm

......

匹配指定字符

[root@wangshaojun ~]# awk '/root/' 1.txt
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

匹配多个字符

[root@wangshaojun ~]# awk '/root|user/' 1.txt
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin

带特殊字符的

[root@wangshaojun ~]# awk '/r*o/' 1.txt
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

...

分段匹配

[root@wangshaojun ~]# awk -F':' '$1~/r*o/' 1.txt////以冒号为分隔符,搜索第一段含r*o的行
root:x:0:0:root:/root:/bin/bash
daemon:x:2:2:daemon:/sbin:/sbin/nologin
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

.....

分段匹配并只显示指定的行

[root@wangshaojun ~]# awk -F':' '$1~/r*o/ {print $3}' 1.txt ///显示第一段r*o的行的第三段
0
2
6
11

....

同时匹配两个关键词并现在指定行的指定段

[root@wangshaojun ~]# awk -F':' '$1~/r*o/ {print $1,$3}; $1~/user/ {print $1,$3}' 1.txt

[root@wangshaojun ~]# awk -F':' '$1~/r*o|user/ {print $1,$3}' 1.txt

root 0
daemon 2
shutdown 6
operator 11

.....

//////////////////////////////////////////////////////////////////////////////////////////

总结:awk -F 指定分割符 ‘:’ OFS=":"指定显示结果的分隔符 以段来匹配 ‘/r*o/’指定过滤条件 {print $3}显示过滤结果的第几段 指定文件

awk -F ‘:’ ‘$1~/r*o/’ 指定根据第几段来搜索 ~ 后面跟关键词

|可以合并搜索 ;可以分别搜索
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: