Chinaunix首页 | 论坛 | 博客
  • 博客访问: 163702
  • 博文数量: 32
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 155
  • 用 户 组: 普通用户
  • 注册时间: 2013-03-08 09:08
个人简介

胖子不是一口吃成滴!

文章分类

全部博文(32)

文章存档

2017年(1)

2016年(4)

2014年(1)

2013年(26)

分类: LINUX

2013-03-26 12:48:16

    awk,样式扫描和处理语言,扫描文件中的每一行,查找与命令行中所给定内容相匹配的模式。如果发现匹配内容,则进行下一个编程步骤。如果找不到匹配内容,则继续处理下一行。
1、判断本地用户类型(管理员/系统用户/普通用户)

点击(此处)折叠或打开

  1. # if …… ; else if …… ; else条件判断
  2. # awk -F: '{if($3==0) print $1,$3,"管理员";else if($3<500) print $1,$3,"系统用户";else print $1,$3,"普通用户"}' /etc/passwd
  3. root 0 管理员
  4. bin 1 系统用户
  5. daemon 2 系统用户
  6. tcpdump 72 系统用户
  7. oracle 500 普通用户
  8. test 501 普通用户
2、打印文件奇数行、偶数行

点击(此处)折叠或打开

  1. # i逻辑非
  2. [root@oracle ~]# seq 10 | awk 'i'
  3. [root@oracle ~]# seq 10 | awk '!i'
  4. 1
  5. 2
  6. 3
  7. 4
  8. 5
  9. 6
  10. 7
  11. 8
  12. 9
  13. 10
  14. [root@oracle ~]# seq 10 | awk 'i=!i'
  15. # NR行号
  16. # %模运算、==关系运算
  17. [root@oracle ~]# seq 10 | awk 'NR%2==1'
  18. 1
  19. 3
  20. 5
  21. 7
  22. 9
  23. [root@oracle ~]# seq 10 | awk 'BEGIN{i=1}i=!i'
  24. [root@oracle ~]# seq 10 | awk 'NR%2==0'
  25. 2
  26. 4
  27. 6
  28. 8
  29. 10
3、
【? : 】:条件运算符 
RS:字段分隔符
ORS:输出字段分隔符

点击(此处)折叠或打开

  1. [root@oracle cuijm]# cat >>xxx<
  2. > a
  3. > 1
  4. > b
  5. > 2
  6. > c
  7. > 3
  8. > EOF
  9. [root@oracle cuijm]# awk 'ORS=(i=!i)?" ":RS' xxx
  10. a 1
  11. b 2
  12. c 3


4、分行显示PATH变量的数值


点击(此处)折叠或打开

  1. # echo $PATH
  2. /usr/lib/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/nginx/sbin:/usr/local/mysql/bin:/usr/local/java/bin:/root/bin:/root/bin:/usr/local/mysql/bin:/usr/local/mysql/lib
  3. # -F域分隔符;
  4. # for循环;
  5. # echo $PATH | awk -F':' '{for (i=1;i<=NF;i++) print i,$i}'
  6. 1  /usr/lib/qt-3.3/bin
    2  /usr/local/sbin
    3  /usr/local/bin
    4  /sbin
    5  /bin
    6  /usr/sbin
    7  /usr/bin
    8  /root/bin
  7. # OFS输出字段分隔符;
  8. # echo $PATH | awk -F':' '{OFS="-->";for (i=1;i<=NF;i++) print i,$i}'
  9. # echo $PATH | awk -F':' '{OFS="-->"}{for (i=1;i<=NF;i++) print i,$i}'
  10. 1-->/usr/lib/qt-3.3/bin
    2-->/usr/local/sbin
    3-->/usr/local/bin
    4-->/sbin
    5-->/bin
    6-->/usr/sbin
    7-->/usr/bin
    8-->/root/bin
  11. # BEGIN{}模块;
  12. # END{}模块;
  13. # echo $PATH | awk -F':' 'BEGIN{OFS="-->";print "-----Begin-----"}{for (i=1;i<=NF;i++) print i,$i}END{print "----END-----"}'
  14. -----Begin-----
    1-->/usr/lib/qt-3.3/bin
    2-->/usr/local/sbin
    3-->/usr/local/bin
    4-->/sbin
    5-->/bin
    6-->/usr/sbin
    7-->/usr/bin
    8-->/root/bin
    ----END-----


  

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