日期:2014-05-16  浏览次数:20722 次

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 }'?


?

?

?

?

变量名 含义?

ARGC 命令行变元个数?

ARGV 命令行变元数组?

FILENAME当前输入文件名?

FNR 当前文件中的记录号?

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

RS 输入记录分隔符?

NF 当前记录里域个数?

NR 到目前为止记录数?

OFS 输出域分隔符?

ORS 输出记录分隔符?


应用笔记?
# 字符串分割。根据"_"
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)}')?

?

?

?