linux-awk命令
目录
AWK介绍
基础语法
1.awk命令格式
2.选项参数
3.内建变量
4.awk脚本命令
5.awk脚本常规模式
5.1 正则表模式
5.2 比较模式
5.3 运算模式
5.4 范围模式
5.5 特殊模式
6.控制语句
6.1 if-else
6.2 while
6.3 for
示例记录
统计netstat各tcp链接状态数量
AWK介绍
Linux中的AWS主要用于处理文本文件,标准化输出文本文件。Linux中默认自带的是gawk,兼容awk、nawk。
- awk--其命名是由三位创始人的Family Name首字母组成(Alfred Aho,Peter Weinberger,Brian Kernighan)。
- nawk--“New AWK”,AT&T版本实验室的AWS升级版。
- gawk--“GNU AWK”,Linux中默认自带的版本。也是功能最强大,社区最活跃的版本。和awk、nawk完全兼容。
- mawk--Ubuntu和Debian Linux上默认的awk,执行速度最快的版本。
基础语法
1.awk命令格式
awk [选项参数] 'awk脚本命令' 文件
2.选项参数
选项参数 | 说明 |
---|---|
-F [fs] | 指定分隔符,fs可以是一个字符串或者正则表达式。不指定fs默认用空格分隔。 |
-v var=value | 自定义变量。例:awk -v a=111 '{print $1,$2,a}' |
-f filename | 从文件中读取awk脚本。 |
-o --pretty-print |
将awk脚本输出到指定文件,如果不指定则输出到当前目录的awkprof.out文件。 |
3.内建变量
变量 | 说明 |
---|---|
$n | 第n个字段,字段由FS分隔。 |
$0 | 完整的输入记录。 |
$NF | 最后一个字段,字段由FS分隔。 |
NF | 一条记录,按FS分隔后的字段数目 |
NR | 行号(已读出的记录数),从1开始。 |
FS | 字段分隔符,默认是空格。 |
RS | 记录(行)分隔符,默认是换行符。 |
OFS |
输出字段分隔符,默认与输入字段分隔符(FS)一致。 例:awk 'OFS="-" {print $1,$2}' |
ORS | 输出记录(行)分隔符,默认是换行符。 |
FNR | 多个文件分别计数的行。 |
FILNAME | 当前文件名。 |
ARGC | 命令行参数数目。 |
ARGV | 命令行参数数组。 |
IGNORECASE | 如果是真,则忽略大小写匹配。 |
4.awk脚本命令
awk脚本命令主要分为三段:BEGIN{command}、/pattern/ {command} 、END{command}
awk 'BEGIN{command} /pattern/ {command} END{command}' file
- BEGIN{command} -- 执行程序启动时执行的代码,整个过程中只执行一次。可缺省。
- /pattern/ {command} -- /pattern/模式匹配,按字符串或正则匹配行,匹配成功后才执行{command},且/pattern/可缺省。
- END{command} -- 执行程序结束时执行的代码。可缺省。
5.awk脚本常规模式
5.1 正则表模式
正则匹配以字符串root开头的行,输出第1个字段。
awk '/^root/ {print $1}' /etc/passwd
5.2 比较模式
匹配第3个字段的值大于400的行,输出第1和第3字段。
awk '$3>400 {print $1 $3}' /etc/passwd
正则匹配第7个字段以bash结尾,输出第1和第7字段。
awk -F':' '$7~"bash$" {print $1 $7}' /etc/passwd
5.3 运算模式
awk -F':' '{print $1+1,$2+1}' file
5.4 范围模式
awk -F':' '/root/,/sys/ {print $1 $3}' file
5.5 特殊模式
BEGIN/END 仅在awk执行后或者结束前执行。
6.控制语句
6.1 if-else
#单分支
'{if (判断条件) {执行语句}}'
'{if (判断条件) 执行语句}'#双分支
'{if (判断条件) {执行语句} else {执行语句}}'
'{if (判断条件) 执行语句;else 执行语句}'#多分支
'{if (判断条件) {执行语句} else if (判断条件) {执行语句} else {执行语句}}'
'{if (判断条件) 执行语句;else if (判断条件) 执行语句;else 执行语句}'
判断/etc/passwd中用户名是root的则输出"root,admin"。其他则正常输出用户名。
awk -F':' '{if ($1=="root") {print $1,"admin"} else {print $1}}' /etc/passwd
6.2 while
i=0;while (判断条件i<2) {执行语句;i++}
awk -F':' '{i=0;while(i<2){print $1;i++}}' /etc/passwd
6.3 for
for (变量 in 数组) {执行语句}
for (变量;条件;表达式) {执行语句}
统计/etc/passwd中各解析器的用户数
awk -F: 'status[$NF]++ END{for (A in status) {print A, status[A]}}' /etc/passwd
示例记录
统计netstat各tcp链接状态数量
netstat -tan | awk '/^tcp/{status[$NF]++} END{for (A in status) {print A,status[A]}}'
linux-awk命令相关推荐
- linux awk命令详解,使用system来内嵌系统命令,批量github,批量批下载视频, awk合并两列...
linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...
- linux awk菜鸟教程,Linux awk 命令
Linux awk 命令 AWK是一种处理文本文件的语言,是一个强大的文本分析工具. 之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian K ...
- 深度学企业linux awk命令详解与应用(下篇)
开篇语: 我们在<一篇速学企业linux awk命令详解与应用(上篇)>中介绍了 awk 的基本用法,其实在awk 脚本程序中,还支持使用一些编程语言,比如变量.数组.分支结构(if-th ...
- linux awk命令根据分隔符输出,Linux运维知识之Linux awk命令详解
本文主要向大家介绍了Linux运维知识之Linux awk命令详解,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. awk :适用程序,一种unix工具 就是一个强大的文本分析工 ...
- linux下awk命令详解,Linux文件处理awk命令-linux awk命令详解-嗨客网
Linux文件处理awk命令详解教程 Linux awk命令说明 awk 是一个强大的文本分析工具,相对于 awk 有 3 个不同版本: awk.nawk 和 gawk,未作特别说明,一般指 gawk ...
- Linux awk命令详解
awk 是除了 sed 命令之外,Linux 系统中另一个功能比较强大的数据处理工具.下面良许小编就将从几个方面对于 Linux awk命令详解命令进行详述,希望对大家有所帮助. 和 sed 命令类似 ...
- Linux awk 命令 说明
2019独角兽企业重金招聘Python工程师标准>>> 一. AWK 说明 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入.一个或多个 ...
- [转]Linux awk 命令 说明
From : http://blog.csdn.net/tianlesoftware/article/details/6278273 一. AWK 说明 awk是一种编程语言,用于在linux/un ...
- Linux awk命令详解??????????(研究)
http://blog.chinaunix.net/uid-25120309-id-3801250.html 一. AWK 说明 awk是一种编程语言,用于在linux/unix下对文本和数据进 ...
- Linux awk 命令
AWK是一种处理文本文件的语言,是一个强大的文本分析工具. 之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Fam ...
最新文章
- 面试题-自旋锁,以及jvm对synchronized的优化
- 【VMware vSAN 6.6】8.2.合规性:我们有软硬件项目解决方案
- HPC China2016全国高性能计算学术年会即将举行
- 【SVN】版本冲突处理之设置needs-lock:true属性
- MongoDB学习笔记(一)--基础
- 在当今移动互联网时代_谁在提供当今最好的电子邮件体验?
- .net core 杂记:用Autofac替换内置容器
- sql中的并、交、差
- 创建者模式 builder
- 技术分享连载(八十九)
- day16- django
- jquery库实现iframe自适应内容高度和宽度
- 1.5 Linux文件目录创建与删除
- RHEL6基础二十四之RHEL软件包管理③源码安装
- 手机秒变门禁卡,支持加密卡
- 贪吃蛇的c语言运行程序,用C语言编写贪吃蛇游戏的程序
- 8.04版本liveCD安装到94%时出现GRUB致命错误的问题解决
- PHP使用数组整型溢出绕过赋值式“永真”判断以进入else子句
- OpenERP中多币种处理(外币处理)
- 曾国藩《挺经》卷七英才