1、awk的简介
其实一门编程语言,支持条件判断,数组,循环等功能,与grep,sed被称为linux三剑客之所以AWK是因为取其三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字符
2、awk的应用场景
通常对数据进行列的提取
3、语法
awk '条件 {执行动作}'文件名
awk '条件1 {执行动作} 条件2 {执行动作} ...' 文件名
或awk [选项] '条件1 {执行动作} 条件2 {执行动作} ...' 文件名
4、相关指令
第一部分:awk初级使用
知识要点:
- awk 默认以空格作为分隔符
- awk 可以使用 -F 指定分隔符
| 符号 | 含义 |
|---|---|
| -F | 指定分隔符 |
| $1 | 代表第一列 |
| $2 | 代表第二列 |
| $0 | 代表一整行 |
awk ‘{print}’ 1.txt #逐行读取文件1.txt内容并打印
awk ‘{print $0}’ 1.txt #逐行读取文件内容,并打印该行,$0保存的是当前行的内容
awk ‘{print “hello”}’ 1.txt #逐行读取1.txt文件内容,每行结束后打印一个hello
awk ‘{print $1}’ 1.txt #打印1.txt的第一列内容,在不指定分割符的情况下,awk默认使用空白做分割符
awk -F “:” ‘{print $1}’ /etc/passwd #以":"为分隔符打印/etc/passwd文件的第一列内容
第二部分: awk高级使用
知识点:
| 指令 | 含义 |
|---|---|
| BEGIN | 在读取所有行内容前就开始执行,常常被用于修改内置变量的值 |
| FS | BEGIN时定义分割符 |
| END | 结束的时候 执行 |
| NR | 记录的是当前行的行号 |
| NF | 记录的是当前行中有多少列 |
| $NF | 记录的是当前行最后一列的内容 |
在awk中使用正则匹配,正则表达式必须要放在//中
awk ‘/123/{print}’ 1.txt #打印1.txt中匹配123的那一行内容
awk提供了多个比较操作符:"==" “>” “<” “<=” “>=” “!=” "~"匹配 "!~"不匹配
awk ‘BEGIN{ FS=":"} $1 == “root” {print $3}’ /etc/passwd #以":"为分隔符,打印/etc/passwd中第一列是root的当前行的第三列
awk ‘BEGIN {FS=":"} {if ($1 ~ “root”) {print $2}}’ /etc/passwd #以":"为分隔符,打印/etc/passwd文件中第一列
awk ‘/ock/{print NF}’ 1.txt # 统计匹配ock的行有多少列
awk ‘NF == 3 {print}’ 1.txt #打印1.txt中有3列的行的内容
awk ‘{if (NR > 3) {print $NF} }’ 1.txt # 输出1.txt中行号大于3的行,其最后一列的内容
awk ‘{if (NR > 3) {print NR".\t"$0} }’ 1.txt #格式化输入1.txt中行号大于3的行的行号和内容
本文详细介绍awk编程语言的基础和高级用法,包括条件判断、数组、循环功能,以及如何使用awk进行数据列的提取,通过具体实例讲解awk的语法和应用场景。












4万+

被折叠的 条评论
为什么被折叠?



