10.awk

db_search 1078.TrPriceBill | sed 1d | sed s/,/ /g | awk $2## 20151001 | sed s/ /,/g | head

sed 1d: 删除第一列

sed s/,/ /g: 把,替换为空格(awk以空格分隔)

awk $2## 20151001: 判断第二列是否满足这个条件

入门实例

1.显示最近登录的5个帐号

last -n 5 <==仅取出前五行

last -n 5 | awk  {print $1}

1) $0则表示所有域,$1表示第一个域,$n表示第n个域

2) 默认域分隔符是"空白键" 或 "[tab]键"

2.指定域分隔符为

cat /etc/passwd |awk  -F :  {print $1}

3.只是显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以tab键分割

cat /etc/passwd |awk  -F :  {print $1"\t"$7}

4.在最后一行添加”blue,/bin/nosh”

cat /etc/passwd |awk  -F :  BEGIN {print "name,shell"}  {print $1","$7} END {print "blue,/bin/nosh"}

5.搜索/etc/passwd有root关键字的所有行

awk -F: /root/ /etc/passwd

1) 搜索支持正则,例如找root开头的

    awk -F: /^root/ /etc/passwd

2) 搜索/etc/passwd有root关键字的所有行,并显示对应的shell

    awk -F: /root/{print $7} /etc/passwd

6.awk内置变量

1) 统计/etc/passwd:文件名,每行的行号,每行的列数,对应的完整行内容:

awk  -F :  {print "filename:" FILENAME ",linenumber:" NR ",columns:" NF ",linecontent:"$0} /etc/passwd

2) 使用printf替代print,可以让代码更加简洁,易读

awk  -F :  {printf("filename:s,linenumber:%s,columns:%s,linecontent:%s\n",FILENAME,NR,NF,$0)} /etc/passwd

7.自定义变量

1) 统计/etc/passwd的账户人数

awk {count  ;print $0;} END{print "user count is ", count} /etc/passwd

2) 有初始化count,虽然默认是0,但是妥当的做法还是初始化为0:

awk BEGIN {count=0;print "[start]user count is ", count} {count=count 1;print $0;} END{print "[end]user count is ", count} /etc/passwd

3) 统计某个文件夹下的文件占用的字节数

ls -l |awk BEGIN {size=0;} {size=size $5;} END{print "[end]size is ", size}

4) 如果以M为单位显示:

ls -l |awk BEGIN {size=0;} {size=size $5;} END{print "[end]size is ", size/1024/1024,"M"}

5) 统计某个文件夹下的文件占用的字节数,过滤4096大小的文件(一般都是文件夹):

ls -l |awk BEGIN {size=0;print "[start]size is ", size} {if($5!=4096){size=size $5;}} END{print "[end]size is ", size/1024/1024,"M"}

8.for循环遍历数组

awk -F : BEGIN {count=0;} {name[count] = $1;count  ;}; END{for (i = 0; i < NR; i  ) print i, name[i]} /etc/passwd
实际使用

1.过滤字符

cat messages-20160626 | head | awk /statement/ {if($1=="Jun"
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值