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 打印磁盘可用情况

shell脚本之awk_第1张图片
3.2 打印字符串

shell脚本之awk_第2张图片

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

shell脚本之awk_第3张图片

根据选项-F指定分隔符

shell脚本之awk_第4张图片

打印多行内容

shell脚本之awk_第5张图片

shell脚本之awk_第6张图片

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

shell脚本之awk_第7张图片

取出文本主机号并放回。

文本内容

shell脚本之awk_第8张图片

shell脚本之awk_第9张图片

shell脚本之awk_第10张图片

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

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

提取/etc/passwd含有root的行

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

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

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

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

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

每一行有几个字段

shell脚本之awk_第11张图片

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

shell脚本之awk_第12张图片

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

shell脚本之awk_第13张图片

NR:当前处理行的行号

shell脚本之awk_第14张图片

NR%2==0取偶数行

NR%2==1取奇数行

shell脚本之awk_第15张图片

shell脚本之awk_第16张图片

取区间行

shell脚本之awk_第17张图片

你可能感兴趣的:(linux)