目录

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命令相关推荐

  1. linux awk命令详解,使用system来内嵌系统命令,批量github,批量批下载视频, awk合并两列...

    linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...

  2. linux awk菜鸟教程,Linux awk 命令

    Linux awk 命令 AWK是一种处理文本文件的语言,是一个强大的文本分析工具. 之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian K ...

  3. 深度学企业linux awk命令详解与应用(下篇)

    开篇语: 我们在<一篇速学企业linux awk命令详解与应用(上篇)>中介绍了 awk 的基本用法,其实在awk 脚本程序中,还支持使用一些编程语言,比如变量.数组.分支结构(if-th ...

  4. linux awk命令根据分隔符输出,Linux运维知识之Linux awk命令详解

    本文主要向大家介绍了Linux运维知识之Linux awk命令详解,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助. awk :适用程序,一种unix工具 就是一个强大的文本分析工 ...

  5. linux下awk命令详解,Linux文件处理awk命令-linux awk命令详解-嗨客网

    Linux文件处理awk命令详解教程 Linux awk命令说明 awk 是一个强大的文本分析工具,相对于 awk 有 3 个不同版本: awk.nawk 和 gawk,未作特别说明,一般指 gawk ...

  6. Linux awk命令详解

    awk 是除了 sed 命令之外,Linux 系统中另一个功能比较强大的数据处理工具.下面良许小编就将从几个方面对于 Linux awk命令详解命令进行详述,希望对大家有所帮助. 和 sed 命令类似 ...

  7. Linux awk 命令 说明

    2019独角兽企业重金招聘Python工程师标准>>> 一.  AWK 说明 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入.一个或多个 ...

  8. [转]Linux awk 命令 说明

    From : http://blog.csdn.net/tianlesoftware/article/details/6278273 一.  AWK 说明 awk是一种编程语言,用于在linux/un ...

  9. Linux awk命令详解??????????(研究)

    http://blog.chinaunix.net/uid-25120309-id-3801250.html 一.  AWK 说明   awk是一种编程语言,用于在linux/unix下对文本和数据进 ...

  10. Linux awk 命令

    AWK是一种处理文本文件的语言,是一个强大的文本分析工具. 之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Fam ...

最新文章

  1. 面试题-自旋锁,以及jvm对synchronized的优化
  2. 【VMware vSAN 6.6】8.2.合规性:我们有软硬件项目解决方案
  3. HPC China2016全国高性能计算学术年会即将举行
  4. 【SVN】版本冲突处理之设置needs-lock:true属性
  5. MongoDB学习笔记(一)--基础
  6. 在当今移动互联网时代_谁在提供当今最好的电子邮件体验?
  7. .net core 杂记:用Autofac替换内置容器
  8. sql中的并、交、差
  9. 创建者模式 builder
  10. 技术分享连载(八十九)
  11. day16- django
  12. jquery库实现iframe自适应内容高度和宽度
  13. 1.5 Linux文件目录创建与删除
  14. RHEL6基础二十四之RHEL软件包管理③源码安装
  15. 手机秒变门禁卡,支持加密卡
  16. 贪吃蛇的c语言运行程序,用C语言编写贪吃蛇游戏的程序
  17. 8.04版本liveCD安装到94%时出现GRUB致命错误的问题解决
  18. PHP使用数组整型溢出绕过赋值式“永真”判断以进入else子句
  19. OpenERP中多币种处理(外币处理)
  20. 曾国藩《挺经》卷七英才

热门文章

  1. html界面原型,进行 Web 界面原型设计的一种方法 - JunChen Wu
  2. camera上电时序
  3. 十种客观评价语音质量的方法
  4. EOS项目编译及操作入门
  5. C语言实现split()函数:字符串分割
  6. java读写excel表格数据
  7. 信息技术计算机的飞速发展,21世纪是一个信息技术飞速发展和计算机广泛应用.doc...
  8. jeesite信息化快速发展平台
  9. 基于CAN总线的KWP2000协议
  10. .NET中间件以及VUE拦截器联合使用