【linux学习笔记】awk用法总结
来源:互联网 发布:java ocr 验证码 编辑:程序博客网 时间:2024/06/06 00:57
AWK是一种优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一.
这篇博客是http://coolshell.cn/articles/9070.html的读书笔记。
---
//
//按列输出
//
首先,用
netstat > netstat.txt
命令把netstat的结果重定向到netstat.txt中
结果类似这样:
Proto Recv-Q Send-Q Local Address Foreign Address Statetcp 0 0 localhost:37745 localhost:4730 ESTABLISHEDtcp 0 0 localhost:48344 localhost:4730 ESTABLISHEDtcp 0 0 localhost:4730 localhost:48344 ESTABLISHEDtcp 0 0 localhost:48342 localhost:4730 ESTABLISHEDtcp 0 52 ip-10-156-238-114.a:ssh li476-220.members:49359 ESTABLISHEDtcp 0 0 localhost:4730 localhost:37741 ESTABLISHEDtcp 0 0 localhost:48340 localhost:4730 ESTABLISHEDtcp 0 0 localhost:48341 localhost:4730 ESTABLISHEDtcp 0 1 ip-10-156-238-114.:http 60.175.244.116:5268 FIN_WAIT1
现在,我要打印第一列($1)和第四列($4),注意$0表示整行
awk '{print $1, $4}' netstat.txt结果如下:
Proto Local tcp localhost:37745tcp localhost:48344tcp localhost:4730tcp localhost:48342tcp ip-10-156-238-114.a:sshtcp localhost:4730tcp localhost:48340tcp localhost:48341tcp ip-10-156-238-114.:http
//
//过滤记录
//
下面过滤条件为:第三列的值为0 && 第6列的值为ESTABLISHED
awk '$3==0 && $6=="ESTABLISHED"' netstat.txt
结果:
tcp 0 0 localhost:37745 localhost:4730 ESTABLISHEDtcp 0 0 localhost:48344 localhost:4730 ESTABLISHEDtcp 0 0 localhost:4730 localhost:48344 ESTABLISHEDtcp 0 0 localhost:48342 localhost:4730 ESTABLISHEDtcp 0 0 localhost:4730 localhost:37741 ESTABLISHED
//
//内建变量
//
$0 当前记录(这个变量中存放着整个行的内容)
$1~$n当前记录的第n个字段,字段间由FS分隔
FS输入字段分隔符 默认是空格或Tab
NF 当前记录中的字段个数,就是有多少列
NR已经读出的记录数,就是行号,从1开始,如果有多个文件话,这个值也是不断累加中。
FNR 当前记录数,与NR不同的是,这个值会是各个文件自己的行号
RS 输入的记录分隔符, 默认为换行符
OFS输出字段分隔符, 默认也是空格
ORS 输出的记录分隔符,默认为换行符
FILENAME 当前输入文件的名字
输出行号的例子:
awk '$3==0 && $6=="ESTABLISHED" || NR==1 {printf "%2s %-20s %-20s %s\n", NR, $4, $5, $6}' netstat.txt
结果:
1 (w/o servers) 3 localhost:37745 localhost:4730 ESTABLISHED 4 localhost:48344 localhost:4730 ESTABLISHED 5 localhost:4730 localhost:48344 ESTABLISHED 6 localhost:48342 localhost:4730 ESTABLISHED 8 localhost:4730 localhost:37741 ESTABLISHED 9 localhost:48340 localhost:4730 ESTABLISHED10 localhost:48341 localhost:4730 ESTABLISHED12 localhost:4730 localhost:37747 ESTABLISHED
//
//指定分隔符
//
awk 'BEGIN{FS=":"} {print $1, $3, $6}' /etc/passwd
说明:
BEGIN{ 这里面放的是执行前的语句 }
END {这里面放的是处理完所有的行后要执行的语句 }
结果:
root 0 /rootbin 1 /bindaemon 2 /sbinadm 3 /var/admlp 4 /var/spool/lpdsync 5 /sbin
上面的awk命令的另一种写法是:
awk -F: '{print $1, $3, $6}' /etc/passwd
//
//正则匹配
//
awk '$6 ~/EST/ || NR==1 {print NR, $4, $5, $6}' OFS="\t" netstat.txt
上面的命令中 $6 ~/EST/部分就是正则匹配。表示对第6列使用正则, ~ 表示模式开始。/ /中是模式。
1 (w/o servers)3 localhost:37745 localhost:4730 ESTABLISHED4 localhost:48344 localhost:4730 ESTABLISHED5 localhost:4730 localhost:48344 ESTABLISHED6 localhost:48342 localhost:4730 ESTABLISHED
//
//统计
//
列出当前目录下所有php文件的大小(即ls -l结果的第五列)
ls -l *.php | awk '{print $5}'
计算当前目录下所有php文件的大小总和
ls -l *.php | awk '{sum+=$5} END {print sum}'
统计各个connection状态(注意其中数组的用法)
awk 'NR!=1{a[$6]++;} END {for (i in a) print i ", " a[i];}' netstat.txt
统计每个用户的进程占用了多少内存
ps aux | awk 'NR!=1{a[$1]+=$6} END {for (i in a) print i ", " a[i] "KB"}'
0 0
- 【linux学习笔记】awk用法总结
- [linux]Awk学习笔记
- [linux]awk 学习笔记
- Linux-awk学习笔记
- ubuntu awk学习笔记 linux
- Awk 命令学习总结、AWk命令系列学习(linux shell)
- Awk 命令学习总结、AWk命令系列学习(linux shell)
- Awk 命令学习总结、AWk命令系列学习(linux shell)
- Awk 命令学习总结、AWk命令系列学习(linux shell)
- Awk 命令学习总结、AWk命令系列学习(linux shell)
- Awk 命令学习总结、AWk命令系列学习(linux shell)
- Linux命令之awk学习笔记
- awk用法总结
- awk用法总结
- awk用法总结
- awk常见用法总结
- shell awk 用法总结
- shell awk 用法总结
- 树莓派开机运行脚本
- jQuery对象和Dom对象简单小结
- Spring + Hibernate4识别jar包中的实体类(Entity)
- 查询sql 锁表
- Java 中 Map与JavaBean之间的相互转化
- 【linux学习笔记】awk用法总结
- Java Excel 导入实现
- oracle实例的内存(SGA和PGA)进行调整,优化数据库性能
- C语言字符型数据
- 该相信爱情吗
- Eclipse有时候无法复制粘贴的解决办法
- linux--历史命令--history
- 第六周项目二——对象作为数据成员
- Linux环境下源码编译安装MySQL5.5