Linux神器AWK学习笔记

 

    awk单独拿出来写了这篇笔记是因为它是在太强大了,简直就是一门脚本语言。

 

入门篇
# 数值计算
echo | awk '{print 19+7}' # 25

# 字符分割,-F指定分割符号,下例为"_"。如果不指定-F参数则使用空格分割
echo A_B_C | awk -F "_" '{print $1}'  # A

#字符串函数
echo  "apple banana dog"  | awk  '{print  substr($1, 1, 5)  }' # apple

#求和,对my.txt的第一列数值求和:
my.txt
-----
1 a
2 b
3 c
cat my.txt | gawk '{ sum += $1 }; END { print sum }' 

# 计算平均数
cat count.txt | awk '{sum+=$1} END {print "avg=", sum/NR}'

 

应用笔记 
# 字符串分割。根据"_"
ls | awk -F "_" '{print $1F}'

#删除某列,并输出
zcat xx.gz | awk '{$1 = null ;print}'

#输出最后一列
cat a.txt | awk '{print $NF}')

#输出倒数第二列
cat a.txt | awk '{print $(NF-1)}') 

 

 

求和、求平均数
# cat inputfile
1 50
2 30
3 20
4 50
# awk -F' ' '{sum+=$2;count+=1} END{print "SUM:"sum"\nAVG:"sum/count}' inputfile
SUM:150
AVG:37.5

 

 

变量名 含义

ARGC 命令行变元个数

ARGV 命令行变元数组

FILENAME当前输入文件名

FNR 当前文件中的记录号

FS 输入域分隔符,默认为一个空格

RS 输入记录分隔符

NF 当前记录里域个数

NR 到目前为止记录数

OFS 输出域分隔符

ORS 输出记录分隔符

 

你可能感兴趣的:(linux)