awk命令
1)概念:一个强大的文本分析工具,awk把文件逐行地读入,以空白字符为默认分隔符将每行进行切片,然后对这些切片进行分析和处理。
2)说明:
1)awk会针对文件(或数据流)中的每行文本执行程序脚本。
2)每行文本中,数据切片是通过分隔符进行划分的,分隔符默认为:任意的空白字符(空格或制表符)。
3)awk在读取一行文本时,会用分隔符将每行数据进行切片,并自动给一行中的每个数据切片分配一个变量:
$0 代表整个文本行
$1 代表文本行中的第1个数据切片
$2 代表文本行中的第2个数据切片
$n 代表文本行中的第n个数据切片
$NF 代表文本行中最后的那个数据切片
3)格式:
awk [参数] 'awk程序脚本' filename
4)参数:
-F 分隔符
# awk -F ':' 指定分隔符为冒号
5)函数:
print:打印数据
1)参数可以是变量、数值、字符串
2)字符串必须用双引号包起来,参数用逗号分隔。
6)举例:
awk '{print $2$3$4$5}' dumpFile1
# 大括号{} 用于根据特定的模式(pattern)对一系列的指令(action)进行分组。
7)常用:
# 求最大值
.. | awk 'BEGIN {max = 0} {if ($1 > max) max=$1} END {print "Max=", max}'
# 求最小值
.. | awk 'BEGIN {min = 1000000} {if ($1 < min) min=$1} END {print "Min=", min}'
# 求和
.. | awk '{sum+=$1} END {print "Sum=", sum}'
# 求平均值 注:NR表示awk开始执行程序后所读取数据的行数
.. | awk '{sum+=$1} END {print "Avg=", sum/NR}'
# 条件过滤
.. | awk '{if ($1 > 10) print $1 }'
# 打印第10行的内容
.. | awk 'NR==10'
8)awk解析excel:
1>将excel文件中的数据选中,然后复制到文本文件中。
2>cat excel复制过来的数据.txt | awk -F '\t' '{print $1"\t"$2"\t"$5"}' > 解析结果.txt