博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux 中awk用法
阅读量:5124 次
发布时间:2019-06-13

本文共 2943 字,大约阅读时间需要 9 分钟。

awk 用法

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

awk内置变量

FS :输入域分隔符,默认为一个空格或tabNR:目前 awk处理的是第几行数据NF: 每一行拥有的字段数目$0:代表当前行。 $1,$2,$3...代表被分隔后的各字段

例子: 打印$2,$3中间用" %% "分隔符

vigar@vigar-laptop:~$ ifconfig | grep "inet addr"          inet addr:127.0.0.1  Mask:255.0.0.0          inet addr:192.168.0.100  Bcast:192.168.0.255  Mask:255.255.255.0vigar@vigar-laptop:~$ ifconfig | grep "inet addr" | awk '{print $2 " %% " $3}' addr:127.0.0.1 %% Mask:255.0.0.0addr:192.168.0.100 %% Bcast:192.168.0.255

区别NR与NF的意义

vigar@vigar-laptop:~$ last -n 5                                                      vigar    pts/0        :0.0             Tue Sep 18 23:36   still logged in   vigar    tty7         :0               Tue Sep 18 23:23   still logged in   reboot   system boot  2.6.32-21-generi Tue Sep 18 23:22 - 23:53  (00:31)    vigar    pts/1        :0.0             Mon Sep 17 21:31 - down   (02:00)    vigar    tty1                          Mon Sep 17 21:11 - down   (02:21)    wtmp begins Sat Sep  1 15:35:42 2012vigar@vigar-laptop:~$ last -n 5 | awk '{print $1 "\t lines: " NR  "\t columns: " NF}'vigar     lines: 1     columns: 10vigar     lines: 2     columns: 10reboot     lines: 3     columns: 11vigar     lines: 4     columns: 10vigar     lines: 5     columns: 9          lines: 6     columns: 0wtmp      lines: 7     columns: 7

从/etc/passwd中找出第三列小于10的数据

vigar@vigar-laptop:~$ cat /etc/passwd | awk '{FS=":"} $3<10 {print $1 "\t" $3}'root:x:0:0:root:/root:/bin/bash    daemon    1bin       2sys       3sync      4games     5man       6lp        7mail      8news      9

其中有问题,第一行的数据未正常显示,因为第一行时FS变量尚未被正常设置,这时要用begin

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

用一段awk脚本完成工资总数统计,呵呵,熟悉的情况下这比excel还快咧。。。

vigar@vigar-laptop:~$ cat pay.txt name 1st 2nd 3thjohnny 23 23 34perry  24 24 25sherman 33 33 35vigar@vigar-laptop:~$ cat pay.txt | awk 'NR==1 {printf "%10s %10s %10s %10s %10s\n",$1,$2,$3,$4,"Total"} NR>=2 {total=$2+$3+$4; printf "%10s %10d %10d %10d %10.2f\n",$1,$2,$3,$4,total}'      name        1st        2nd        3th      Total    johnny         23         23         34      80.00     perry         24         24         25      73.00   sherman         33         33         35     101.00vigar@vigar-laptop:~$

 

test-/opt/CC/hello/bin> ps -aux | awk '$4>0 {print $1 "\t"  $2 "\t" $4 "\t"  $11}'shiadmin        7470    0.1     /usr/NX/bin/nxagentp4admin 12230   15.2    javap4admin 13995   0.2     javashiadmin        17118   1.0     /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/javashiadmin        21822   1.2     /usr/bin/javap4admin 25350   0.5     javap4admin 25965   0.3     javap4admin 27456   1.2     javap4m     28450   0.5     /opt/mqm/bin/amqzmuc0p4m     28510   0.2     /opt/mqm/bin/amqzlaa0p4m     29844   0.6     /opt/mqm/bin/amqrmppa

 

转载于:https://www.cnblogs.com/vigarbuaa/archive/2012/09/19/2692407.html

你可能感兴趣的文章
Android 高级UI设计笔记12:ImageSwitcher图片切换器
查看>>
【Linux】ping命令详解
查看>>
对团队成员公开感谢博客
查看>>
java学习第三天
查看>>
python目录
查看>>
django+uwsgi+nginx+sqlite3部署+screen
查看>>
Andriod小型管理系统(Activity,SQLite库操作,ListView操作)(源代码下载)
查看>>
在Server上得到数据组装成HTML后导出到Excel。两种方法。
查看>>
浅谈项目需求变更管理
查看>>
经典算法系列一-快速排序
查看>>
设置java web工程中默认访问首页的几种方式
查看>>
ASP.NET MVC 拓展ViewResult实现word文档下载
查看>>
8、RDD持久化
查看>>
第二次团队冲刺--2
查看>>
VMware Tools安装
查看>>
Linux上架设boost的安装及配置过程
查看>>
[转载]加密算法库Crypto——nodejs中间件系列
查看>>
zoj 2286 Sum of Divisors
查看>>
使用Xshell密钥认证机制远程登录Linux
查看>>
OpenCV之响应鼠标(三):响应鼠标信息
查看>>