AWK学习

sed -n '2p'       获取第二行

seq 100|awk '$1%7==0 ||$1 ~/7/{print $0}'         #1-100中7的倍数和包括7的数
~:匹配符

awk -F ':' '{print $2}'      -F是设定以“:”作为分隔符,打印出第二列的信息
|                 管道符,将前一个命令的正确输出作为后一个命令的输入处理
awk '/^root/{print $0}' /etc/passwd      匹配到开头为root的行,将改行打印出来


cat /etc/passwd|awk -F':' '{if ($1=="root") print $0}'     判断第一列的值,是“root”,则将该行打印出来
awk -F ':' '{if ($1=="root") print $0}' /etc/passwd        判断第一列的值,是“root”,则将该行打印出来


awk -F':' '{if ($3>=30 && $3<=40) print $0}' /etc/passwd    用户id在30和40范围内的用户信息
awk -F':' '$3>=30 && $3<=40{print $0}' /etc/passwd


/etc/passwd 用户信息文件总共7列,用冒号‘:’分隔
amanda:    x:      33:    6:     Amanda user:      /var/lib/amanda:    /bin/bash
用户名   密码项      UID    GID      用户描述信息        主目录               登录bash


UID:用户ID(user)
GID:组ID(group)




awk中的内置变量
NF  每行的字段数
NR 行号信息

例1:
awk -F ':' '{print NR,$0}' /etc/passwd        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 news:x:9:13:news:/etc/news:



例2:
awk -F ':' '{print NF,$0}' /etc/passwd|head -n 5     显示前5行的字段数 
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

例3:
awk -F':' 'NR<6{print NF,$0}' /etc/passwd    显示前5行的字段数
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




例1:
awk -F':' 'NR>4 && NR<11 {print NR,$0}' /etc/passwd           将文件5-10行行号和当前行打印出来
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 news:x:9:13:news:/etc/news:



例2:
awk -F':' 'NR%2!=0{print NR,$0}' /etc/passwd          打印奇数
1 root:x:0:0:root:/root:/bin/bash
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
9 mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
11 uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
13 games:x:12:100:games:/usr/games:/sbin/nologin




例3:
awk -F':' 'NR%2==0{print NR,$0}' /etc/passwd 打印偶数行
2 bin:x:1:1:bin:/bin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
8 halt:x:7:0:halt:/sbin:/sbin/halt
10 news:x:9:13:news:/etc/news:
12 operator:x:11:0:operator:/root:/sbin/nologin



printf:格式化输出
%-15s
-:左对齐
15:不足15个补空格
%s:字符
%d:数字
\n:换行
注意:格式与输出列之间要有逗号


awk -F':' 'BEGIN{printf "%-15s%-10s%10s\n","用户名","UID","GID"};$3!=$4{printf "%-15s%-10d%10d\n",$1,$3,$4}' /etc/passwd
用户名         UID              GID
adm            3                  4
lp             4                  7
sync           5                  0
shutdown       6                  0
halt           7                  0





来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26705770/viewspace-1294715/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26705770/viewspace-1294715/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值