一、awk内置变量
ARGC | 命令行参数个数 |
ARGV | 命令行参数排列 |
ENVIRON | 支持队列中系统环境变量的使用 |
FILENAME | awk浏览的文件名 |
FNR | 浏览文件的记录数 |
FS | 设置输入域分隔符,等价于命令行 -F选项 |
NF | 浏览记录的域的个数 |
NR | 已读的记录数 |
OFS | 输出域分隔符 |
ORS | 输出记录分隔符 |
RS | 控制记录分隔符 |
例如使用如下脚本判断一行数据中列的个数,及某列是否为小数:
cat t_doFind_fetch.txt | awk -F ' ' '{if(NF == 3 && ($3 ~ /^[0-9\.]+$/)){print $0}}' > t_doFind_fetch2.txt
二、判断某列是小数
echo "0.123" |awk '{if($0 ~ /^[0-9\.]+$/) print $0;}'
三、awk数字相加
1、整数相加
awk用数字和字母相加,不会报错,总和只是所有为数字的字段和,假设文本内容如下(以空格和tab分隔字段):
1 2 3
2 3 4
a b c
使用如下脚本:
cat test.txt | awk -F ' ' 'BEGIN{total=0;} {total+=$1} END{print total;}'
以上脚本的运行过程中并没有报错,并且运行结果为:3
2、科学计数法相加
awk脚本支持科学计数法相加,如下文本:
t_file_fetch = 1.00135803223e-05
t_file_fetch = 4.05311584473e-06
t_file_fetch = 3.09944152832e-06
使用脚本:
cat test.txt | awk -F ' ' 'BEGIN{total=0;} {total+=$3} END{print total;}'
运行结果:1.71661e-05