(续)awk 基本用法

awk 基本用法

linux 上面默认使用 gawk
AWK是一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言(其名称得自于它的创始人阿尔佛雷德·艾侯、彼得·温伯格和布莱恩·柯林汉姓氏的首个字母)的最大功能取决于一个人所拥有的知识。awk经过改进生成的新的版本nawk,gawk,现在默认linux系统下日常使用的是gawk,用命令可以查看正在应用的awk的来源。
特点
AWK是一种优良的文本处理工具。它不仅是 Linux 中也是任何环境中现有的功能最强大的数据处理引擎之一。这种编程及数据操作语言(其名称得自于它的创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏的首个字母)的最大功能取决于一个人所拥有的知识。AWK 提供了极其强大的功能:可以进行样式装入、流控制、数学运算符、进程控制语句甚至于内置的变量和函数。它具备了一个完整的语言所应具有的几乎所有精美特性。实际上 AWK 的确拥有自己的语言:AWK 程序设计语言, 三位创建者已将它正式定义为“样式扫描和处理语言”。它允许您创建简短的程序,这些程序读取输入文件、为数据排序、处理数据、对输入执行计算以及生成报表,还有无数其他的功能。
最简单地说, AWK 是一种用于处理文本的编程语言工具。AWK 在很多方面类似于 shell 编程语言,尽管 AWK 具有完全属于其本身的语法。它的设计思想来源于 SNOBOL4 、sed 、Marc Rochkind设计的有效性语言、语言工具 yacc 和 lex ,当然还从 C 语言中获取了一些优秀的思想。在最初创造 AWK 时,其目的是用于文本处理,并且这种语言的基础是,只要在输入数据中有模式匹配,就执行一系列指令。该实用工具扫描文件中的每一行,查找与命令行中所给定内容相匹配的模式。如果发现匹配内容,则进行下一个编程步骤。如果找不到匹配内容,则继续处理下一行。
尽管操作可能会很复杂,但命令的语法始终是:
awk ‘{pattern + action}’ 或者 awk ‘pattern {action}’
其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号 ({}) 不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。
gawk 是 AWK 的 GNU 版本。
一般的UNIX作业系统,本身即附有AWK,不同的UNIX作业系统所附的AWK其版本亦不尽相同,若读者所使用的系统上未附有AWK,可通过 anonymous ftp 到下列地方取得:
phi./pub/gnu
ftp/UNIX/gnu
preppub/gnu
注 解:一种编程语言,因其模式匹配语法而特别有用,通常用于数据检索和数据转换。一个GNU版本称为Gawk。
相关操作
awk '{print FILENAME}' passwd就是FILENAME 显示文件名字
awk 'NR/NF=={print 第 "NR" 行 , 有 "NF" 列 }' passwd NR== x就是第几行,NF==x就是第几列
awk 'BEGIN{print NAME}'开头写什么
awk 'END{print WESTOS}'结尾写什么
awk -F : 'BEGIN{print NAME}{print $1}END{WESTOS}'综合-F就是以什么为分隔符
awk '/bash$ /'以bash结尾的
awk -F : '/bash$ /{print $ 1}'以:分隔符bash结尾的
awk 'BEGIN{a=34;print a+12}' 可以计算
awk -F : '/^ro/{print}' /etc/passwd 以ro开头
awk -F : '/ ^ [a-d] /{print $ 1,$ 6}' passwd.txt a或b或c或d开头
awk -F : '/^a|nologin$ /{print $ 1,$7}' passwd.txt a开头 nologin结尾
awk -F : '$6~/bin $/{print $ 1,$6}' 第六行是以bin结尾的
awk -F : '$7!~/nologin $/{print $1,$7}' passwd.txt 第七行不是以nologin结尾的

以:为分隔符,打印passwd文件的第一列
在这里插入图片描述
以:为分隔符,在开头打印hello,并打印passwd文件第二列
在这里插入图片描述
以:为分隔符,在开头赋值n=1,打印passwd文件第二列,并在第二列打印n
在这里插入图片描述
以:为分隔符,在开始赋值n=1,打印passwd文件第二列,第二列打印n并且一次加1

在这里插入图片描述以:为分隔符,在开始赋值n=1,第一列打印n并且一次加1,打印passwd文件第一列
在这里插入图片描述
以:为分隔符,在开始赋值n=1,第一列打印n并且一次加1,打印passwd文件第一列,在结尾打印over
在这里插入图片描述
以:为分隔符,在开始赋值n=1,第一列打印n并且一次加1,打印passwd文件第一列,在结尾打印总行数
在这里插入图片描述
打印passwd文件一bash结尾的一行
在这里插入图片描述
打印passwd文件一bash结尾的一行的第一列
在这里插入图片描述
以:为分隔符,打印passwd文件的第三行第一列
在这里插入图片描述
以:为分隔符,打印passwd文件的第四行到第六行

在这里插入图片描述
以:为分隔符,打印passwd文件的第四行和第六行
在这里插入图片描述
打印文件行数的文件名
在这里插入图片描述
在开头赋值N=0,以nologin结尾,N依次加1,最后打印N
在这里插入图片描述
抓取本机上可以登陆的用户
在这里插入图片描述
打印34+12
在这里插入图片描述
awk 测试
脚本
抓取 eth0 网卡的 ip
脚本写法:
在这里插入图片描述
结果
在这里插入图片描述

以:为分隔符,打印passwd文件以ro开头的
以:为分隔符,打印以abcd开头的

在这里插入图片描述
以:为分隔符,打印passwd文件以a开头,nologin结尾的第一列和第六列
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值