AWK基础知识小结
AWK是一个强大的文本处理工具,它支持文本搜素、文本提取、文本处理、文本格式化等文本处理功能,被广泛应用于Linux下的文本处理和数据分析中。下面我们来详细讲解AWK的基础知识。
AWK执行过程
awk执行过程是先按照指定分隔符把每行数据解析成多个字段,然后对每一个字段执行指定操作,最后输出结果。其基本格式为:
awk [options] 'pattern {command}' file
其中,pattern用于指定查找条件,command用于指定处理操作,file为需要处理的文件。
例如,下面的命令用来输出test.log文件的第3列数据:
awk '{print $3}' test.log
AWK常用选项
选项 | 说明 |
---|---|
-F | 指定字段分隔符,默认为“空格” |
-v | 定义变量 |
-f | 指定脚本文件名 |
-NR | 对读入的行数计数 |
-NF | 对当前行的字段个数进行计数 |
-BEGIN | 在开始处理之前执行语句一次 |
-END | 在处理结束后执行语句一次 |
AWK常用函数
常用字符串函数
函数 | 说明 |
---|---|
substr | 返回子字符串 |
match | 匹配子字符串 |
index | 返回目标字符/子串在字符串中的位置 |
length | 返回字符串长度 |
例如,下面的命令用来输出test.log文件的第2列数据中前3个字符:
awk '{print substr($2,1,3)}' test.log
常用数学函数
函数 | 说明 |
---|---|
int | 向下取整 |
sqrt | 求平方根 |
log | 求自然对数 |
rand | 返回一个随机数 |
例如,下面的命令用来在[0, 100]范围内生成5个随机数:
awk 'BEGIN {for(i=1;i<=5;i++) print int(rand()*100)}'
AWK条件语句
AWK支持if语句,常用于根据输入进行判断并执行相应的处理操作。
例如,下面的命令用来输出test.log文件的第1列数据,但仅输出的值大于10的行:
awk '{if($1>10) print $1}' test.log
AWK循环语句
AWK支持for和while两种循环语句,常用于遍历输入数据并执行相应的处理操作。
例如,下面的命令用来输出test.log文件的第3列数据中偶数行:
awk '{for(i=1;i<=NF;i++) if(i%2==0) print $i}' test.log
示例
- 统计一个文件中每个单词的数量:
awk '{for(i=1;i<=NF;i++) {a[$i]++}} END {for(k in a) print k,a[k]}' test.txt
- 计算一个csv文件中某一列数值的平均值:
awk -F, '{sum+=$3} END {print sum/NR}' test.csv
以上就是AWK基础知识小结的详细介绍。通过学习,相信大家已经能够灵活运用AWK进行文本处理和数据分析了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:awk基础知识小结 - Python技术站