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
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/