linux awk命令

    awk是一个数据处理工具。与sed处理整行数据相比。awk则比较倾向将一行分成数个“字段”来处理。

    awk通常运行的格式是这样的:

    awk '条件类型1 {动作1} 条件类型2 {动作2} ...' filename

    变量名的含义

    NR:当前的行号

    NF:当前行的字段总数

    FS:目前的分隔符,默认是空格

lhj@lhj-virtual-machine:~$ last -n 5|awk '{print $1 "\t"  $2}'

    结果:

lhj	pts/0
lhj	tty7
(unknown	tty7
reboot	system
lhj	tty7

lhj@lhj-virtual-machine:~$ cat /etc/passwd|awk '(FS=":")    {if($3<10){print $1 "\t" $3 }}'
或者
lhj@lhj-virtual-machine:~$ cat /etc/passwd|awk -F":" '{if($3<10){print $1 "\t" $3}}'

    第一条命令的结果:

root:x:0:0:root:/root:/bin/bash	
daemon	1
bin	2
sys	3
sync	4
games	5
man	6
lp	7
mail	8
news	9

 第二条命令的结果:

root	0
daemon	1
bin	2
sys	3
sync	4
games	5
man	6
lp	7
mail	8
news	9

    第一条命令的FS是域分隔符,读第一行的时候分隔符还是默认的空格,其作用是从第二行开始生效。不过可以在FS前面增加BEGIN关键字,告诉awk要从第一行开始生效

lhj@lhj-virtual-machine:~$ cat /etc/passwd|awk 'BEGIN {FS=":"}    {if($3<10){print $1 "\t" $3 }}'
root	0
daemon	1
bin	2
sys	3
sync	4
games	5
man	6
lp	7
mail	8
news	9

  awk还可以做列的运算,例如

lhj@lhj-virtual-machine:~$ cat /etc/passwd|awk 'BEGIN {FS=":"}    {if($3<10){s+=$3}} END {print s}'
45


转载于:https://my.oschina.net/u/1053706/blog/228676

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值