Chinaunix首页 | 论坛 | 博客
  • 博客访问: 146732
  • 博文数量: 70
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 770
  • 用 户 组: 普通用户
  • 注册时间: 2017-11-04 11:19
文章分类

全部博文(70)

文章存档

2018年(69)

2016年(1)

我的朋友

分类: LINUX

2018-07-05 23:13:09

9.6 awk(上)
封装josnp框架、测试封装函数


支持分段:
-F:选择分隔符。默认以空格或者是空白字符作为分隔符。
print:选择打印第几段,可以同时指定打印多段,用“,”逗号分隔。$0代表所有。

点击(此处)折叠或打开

  1. [root@localhost awk]# awk -F ':' '{print $1}' passwd
  2. root
  3. bin
  4. daemon
  5. adm
  6. lp
  7. sync
  8. shutdown
  9. halt
  10. mail
  11. operator

多段的输出指定间隔符号,默认空格:

点击(此处)折叠或打开

  1. [root@localhost awk]# awk -F ':' '{print $1,$6}' passwd | head -2
  2. root /root
  3. bin /bin
  4. [root@localhost awk]# awk -F ':' '{print $1" # "$6}' passwd | head -2
  5. root # /root
  6. bin # /bin
类似grep的匹配功能:

点击(此处)折叠或打开

  1. [root@localhost awk]# awk '/oo/' passwd
  2. root:x:0:0:root:/root:/bin/bash
  3. lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
  4. mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
  5. operator:x:11:0:operator:/root:/sbin/nologin
  6. postfix:x:89:89::/var/spool/postfix:/sbin/nologin
  7. [root@localhost awk]# awk -F ':' '$1 ~ /oo/' passwd    //第一行包含的匹配的内容。
  8. root:x:0:0:root:/root:/bin/bash

多功能匹配:

点击(此处)折叠或打开

  1. [root@localhost awk]# awk -F ':' '/root/ {print $1,$3} /user/ {print $1,$3}' passwd
  2. root 0
  3. operator 11
  4. user2 1001
  5. user3 1004
  6. user4 1006
  7. user5 1008
  8. saslauth 997
  9. [root@localhost awk]# grep -E 'root|user' passwd
  10. root:x:0:0:root:/root:/bin/bash
  11. operator:x:11:0:operator:/root:/sbin/nologin
  12. user2:x:1001:1001::/home/user2:/bin/bash
  13. user3:x:1004:1004::/home/user3:/bin/bash
  14. user4:x:1006:1005::/home/user4:/bin/bash
  15. user5:x:1008:1008::/home/user5:/bin/bash
  16. saslauth:x:997:76:Saslauthd user:/run/saslauthd:/sbin/nologin
  17. 或者还可以:
  18. [root@localhost awk]# awk -F ':' '/root|user/ {print $0}' passwd 
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin
    user2:x:1001:1001::/home/user2:/bin/bash
    user3:x:1004:1004::/home/user3:/bin/bash
    user4:x:1006:1005::/home/user4:/bin/bash
    user5:x:1008:1008::/home/user5:/bin/bash
    saslauth:x:997:76:Saslauthd user:/run/saslauthd:/sbin/nologin



针对数学运算表达式的

点击(此处)折叠或打开

  1. [root@localhost awk]# awk -F ':' '$3==0' passwd
  2. root:x:0:0:root:/root:/bin/bash
  3. [root@localhost awk]# awk -F ':' '$3==0 {print $0}' passwd
  4. root:x:0:0:root:/root:/bin/bash
  5. [root@localhost awk]# awk -F ':' '$3>=1000 {print $0}' passwd     //如果这里数字使用双引号括起来,那么是使用ASCII码的方式进行匹配/对比。所以如果是对比数字,那么就不要双引号。
    xiao:x:1000:1000::/home/xiao:/bin/bash
    user2:x:1001:1001::/home/user2:/bin/bash
    user3:x:1004:1004::/home/user3:/bin/bash
    user4:x:1006:1005::/home/user4:/bin/bash
    haha:x:1007:1005::/home/test:/sbin/nologin
    user5:x:1008:1008::/home/user5:/bin/bash
    test1:x:1100:1009::/home/test1:/bin/bash
    zhangsan:x:1101:1101::/home/zhangsan:/bin/bash
    aiya:x:1102:1102::/www/aiya:/sbin/nologin




9.7 awk(下)

取反:匹配内容不为什么的:

点击(此处)折叠或打开

  1. [root@localhost awk]# awk -F ':' '$7!="/sbin/nologin" {print $0}' passwd
  2. root:x:0:0:root:/root:/bin/bash
  3. sync:x:5:0:sync:/sbin:/bin/sync
  4. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  5. halt:x:7:0:halt:/sbin:/sbin/halt
  6. xiao:x:1000:1000::/home/xiao:/bin/bash
  7. user2:x:1001:1001::/home/user2:/bin/bash
  8. user3:x:1004:1004::/home/user3:/bin/bash
  9. user4:x:1006:1005::/home/user4:/bin/bash
  10. user5:x:1008:1008::/home/user5:/bin/bash
  11. test1:x:1100:1009::/home/test1:/bin/bash
  12. zhangsan:x:1101:1101::/home/zhangsan:/bin/bash








































阅读(1106) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~