awk命令详解

  awk是一个优良的文本处理工具,Linux及UNIX环境中现有的功能最强大的数据处理引擎之一,awk是一个行级文本高效处理工具,awk经过改进生成的新的版本有nawk、gawk,一般Linux默认为gawk,gawk是awk的GNU开源免费版本。
  awk基本原理是逐行处理文件中的数据,查找与命令行中所给定内容相匹配的模式,如果发现匹配内容,则进行下一个编程步骤,如果找不到匹配内容,则继续处理下一行。
awk语法格式为:

awk 'pattern +{action} ’ file

awk常用参数、变量、函数

(1)awk基本语法参数
1.单引号’'是为了和shell命令区分开
2.大括号{}表示一个命令分组
3.pattern是一个过滤器,表示匹配pattern条件的行才进行action处理
4.action是处理动作,常见动作为print
5.使用#作为注释,pattern和action可以只有其一,但不能两者都没有
常用命令选项
-F fs fs指定输入分隔符,fs可以是字符串或正则表达式
-v var=value 赋值一个用户定义变量,将外部变量传递给awk
-f scripfile 从脚本文件中读取awk命令
(2)awk内置变量
1.FS:分隔符,默认是空格
2 NR:当前行数
3 NF:当前记录字段个数
4.OFS:输出分隔符
5. 0:当前记录
6.$1~$n:当前记录第n个字段
(3)awk内置函数
1.split(s,a,fs):在fs上将s分成序列a
2.length(l):l的长度
3.index(m,n):返回m中n的第一个位置
4.substr(m,n):返回m从n开始的子串
5.gsub(r,s):在$0中用s代替r
6.match(s,r):s是否匹配r
(4)awk常用操作符、运算符及判断符
1.++,--:增加与减少
2.^∗∗:指数
3.!+-:非、一元(unary)加号、一元减号
4.+-∗/%:加、减、乘、除、求余
5.&&:逻辑and
6.‖:逻辑or
(5)awk流程控制语句
1.if (condition){ }
   else { };
2.while{};
3. do {}
   while(condition);
4.for(init;condition;step){};

BEGIN和END的使用

  在许多编程情况中, 可能需要在 awk 开始处理输入文件中的文本之前执行初始化代码。因此awk 允许定义一个 BEGIN 块,因为 awk 在开始处理输入文件之前会执行 BEGIN 块,因此它是初始化 FS(字段分隔符)变量、打印页眉或初始化其它在程序中以后会引用的全局变量的极佳位置。除此之外还有一个END模块,通常END 块用于执行最终计算或打印应该出现在输出流结尾的摘要信息。
BEGIN{ }: 读入第一行文本之前执行的语句
END{ }: 处理完最后一行文本后执行
{ }: 逐行处理
例如:我们在2.txt文件中使用BEGIN和END模块添加内容

在这里插入图片描述
可以看到在文本开头和结尾打印了输入的内容。

awk命令使用

实例一:打印硬盘设备的名称,以空格分隔输出
在这里插入图片描述实例二:awk以空格、冒号、\t、分号为分割
在这里插入图片描述
实例三:awk以冒号分割2.txt,打印第二列,同时将内容追加到3.txt文件下

在这里插入图片描述
实例四:打印/etc/passwd文件中的第5行至第10行

在这里插入图片描述实例五:打印1.txt文件中长度大于10的行号,NR表示行号

在这里插入图片描述
实例六:以;切割,打印第二列同时只显示前3行
在这里插入图片描述
实例七:打印/etc/passwd中的奇数行
在这里插入图片描述
实例八:OFS输出格式化\t /etc/passwd
在这里插入图片描述实例九:awk与if的配合使用
判断整数的大小
在这里插入图片描述
实例十:wk与数组的使用
统计passwd文件用户数

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值