shell脚本之awk

1.awk基本介绍


AWK 是一种处理文本文件的语言,是一个强大的文本分析工具(awk文本处理工具,可以加载一行,处理一行)可以在无交互的模式下实现复杂的文本操作。

相较于sed常作用于一整个行的处理,awk则比较倾向于一行当中分成数个字段来处理,因为awk相当适合小型的文本数据。

tips:vim 文本处理工具内存不足打不开文件,把整个文件加载到内存里处理,如果内存不足,无法
打开文件。

2.基本格式

awk 选项‘ 表达式{处理动作}’

-F 指定分隔符

-v 指定变量

处理动作:print 打印 printf 打印

内建变量,不能用双引号括起来,不然系统会把它当成字符串。
 

内置变量    作用
$0    当前处理的行的整行内容
$n    当前处理行的第n个字段(第n列)
NR    当前处理的行的行号(序数)
NF    当前处理的行的字段个数。$NF代表最后一个字段
FS    列分割符。指定每行文本的字段分隔符,默认为空格或制表位。与"-F"作用相同
OFS    输出内容的列分隔符
FILENAME    被处理的文件名
RS    行分隔符。awk从文件中读取资料时,将根据RS的定义把资料切割成许多条记录, 而awk一次仅读入一条记录进行处理。预设值是"\n"

3. 打印文本内容

  • awk可以将自动将多个空格压缩成一个空格

  • 打印字符串需要加双引号

3.1 打印磁盘可用情况


3.2 打印字符串

4. 根据$n以及NR提取字段

根据选项-F指定分隔符

打印多行内容

打印磁盘已使用情况(去除百分号)

取出文本主机号并放回。

文本内容

5. 根据关键字提取所在行

提取/etc/passwd以root开头的行

提取/etc/passwd含有root的行

6. 使用BEGIN输出包含指定字符的行并统计有多行

  • BEGIN模式表示,在处理指定的文本之前,需要先执行BEGIN模式中指定的动作;

  • awk再处理指定的文本,之后再执行END模式中指定的动作;

  • END{ } 语句块中,往往会放入打印结果等语句。

7. NF:当前处理行的整行内容 

每一行有几个字段

打印出每一段最后一段内容

打印出每一段最后第二段内容

NR:当前处理行的行号

NR%2==0取偶数行

NR%2==1取奇数行

取区间行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值