设为首页 收藏本站

运维网

查看: 467|回复: 0

[经验分享] Linux(28)awk

[复制链接]

尚未签到

发表于 2018-5-16 12:49:04 | 显示全部楼层 |阅读模式
  awk和sed一样是流式编辑器,它也是针对文档中的行来操作的,一行一行的去执行。awk比sed更加强大,它能做到sed能做到的,同样也能做到sed不能做到的。awk工具和sed相比支持了分段,awk是先过滤行,再过滤列。sed相反,先过滤列,在过滤行
  awk -F ':' '{print $1}' 1.txt   -F 指定分隔符     指定分隔符为;,且把第一段打印出来,$1表示第一段,$0表示所有段,如果不指定分隔符,默认是空格表示
  awk -F ':' '{print $1"#"$3"#"$4}' 1.txt      打印时分隔符自己制定
[root@localhost awk]# awk -F ':' '{print $1"#"$3"#"$4}' 1.txt
root#0#0
bin#1#1
daemon#2#2
adm#3#4
lp#4#7
  awk -F ':' '$1 ~ /oo+/' passwd    打印出第一列匹配到oo+的行
[root@localhost awk]# awk -F ':' '$1 ~ /oo+/' 1.txt
root:x:0:0:root:/root:/bin/bash
  awk -F ':' '/root/ {print $1,$3} /user/ {print $3,$4}' 1.txt 匹配包含root或user一行,root打印出13列。user打印出3,4列
  [root@localhost awk]# awk -F ':' '$3>=1000 ' 1.txt  打印第三段大于1000的,如果1000加上"",系统会判定为一个字符串,以阿                                            斯玛
lty:x:1000:1000::/home/lty:/bin/bash
rxr:x:1001:1001::/home/rxr:/bin/bash
user1:x:1111:1000::/home/user222:/sbin/nologin
user3:x:1010:1000::/home/user111:/sbin/nologin
xb:x:1112:1112::/home/xb:/bin/bash
lyh:x:1113:1113::/home/lyh:/bin/bash
mysql:x:1114:1114::/home/mysql:/bin/bash
  [root@localhost awk]# awk -F ':' '$7!="/sbin/nologin"' 1.txt                                     打印出第7列不等于/sbin/nologin
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
lty:x:1000:1000::/home/lty:/bin/bash
rxr:x:1001:1001::/home/rxr:/bin/bash
xb:x:1112:1112::/home/xb:/bin/bash
lyh:x:1113:1113::/home/lyh:/bin/bash
mysql:x:1114:1114::/home/mysql:/bin/bash
  awk -F ':' '$3<$4' 1.txt                     第三列小于第四列。
awk -F ':' '$3>&quot;5&quot; && $3<&quot;7&quot;' 1.txt              第三列大于5并且第三列小于7
awk -F ':' '$3>1000 || $7==&quot;/sbin/nologin&quot;' 1.txt      第三列大于1000,或者第7列等于/sbin/nologin
awk -F ':' '{OFS=&quot;#&quot;} {if ($3>1000) {print $1,$2,$3,$4}}' 1.txt  第三列大于1000,OFS表示每一列输出时加上#,语法是要加到分隔符后面
[root@localhost awk]# awk -F ':' '{print NR&quot;:&quot; $0}' 1.txt     NR 输出时把行号显示出来
1:root:x:0:0:root:/root:/bin/bash
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11:games:x:12:100:games:/usr/games:/sbin/nologin
12:ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
13:nobody:x:99:99:Nobody:/:/sbin/nologin
14:systemd-bus-proxy:x:999:997:systemd Bus Proxy:/:/sbin/nologin
15:systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
  [root@localhost awk]# awk -F ':' '{print NF&quot;:&quot; $0}' 1.txt        NF 把每一行有多少段显示出来
7:root:x:0:0:root:/root:/bin/bash
7:bin:x:1:1:bin:/bin:/sbin/nologin
7:daemon:x:2:2:daemon:/sbin:/sbin/nologin
7:adm:x:3:4:adm:/var/adm:/sbin/nologin
7:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
7:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
7:halt:x:7:0:halt:/sbin:/sbin/halt
7:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
7:operator:x:11:0:operator:/root:/sbin/nologin
7:games:x:12:100:games:/usr/games:/sbin/nologin
  [root@localhost awk]# awk -F ':' 'NR<=5 ' 1.txt     NR也可以作为判断条件,把前5行打印出来
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
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  [root@localhost awk]# awk -F ':' 'NR<=10 && $1 ~ /root|sync/ ' 1.txt   打印前十行,并且第一列包含root或者sync字符 ~包含
root:x:0:0:root:/root:/bin/bash~
sync:x:5:0:sync:/sbin:/bin/sync
  [root@localhost awk]# awk -F ':' '{(tot=tot+$3)}; END {print tot}' 1.txt  tot是一个赋值循环语句。让$3不停的相加循环,得 11122                                                   出来最后相
  最后关于sed.awk.grep/egrep 有一个链接:http://www.apelearn.com/study_v2/chapter14.html

运维网声明 1、欢迎大家加入本站运维交流群:群①:263444886群②:197202523群③:485755530群④:201730672群⑤:202807635运维网交流群⑥:281548029
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须注明原文的出处
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、运维网 - 服务您的运维操作管理专家!
6、联系人Email:admin@yunvn.com 网址:www.iyunv.com

点击关注更多内容
您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则  允许回帖邮件提醒楼主

关注运维网官方微信X

关注运维网官方微信

扫描二维码关注运维网官方微信,最新一手资源尽在官方微信!快快关注我们吧...

扫描微信二维码查看详情

客服 E-mail:kefu@yunvn.com

本站由青云提供云计算服务

运维网--中国最专业的运维工程师交流社区

京ICP备14039699号-1 Copyright © 2012-2018

使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

Good good study day day up !


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


独家合作伙伴: 青云cloud

快速回复 返回顶部 返回列表