awk 内置变量
1.ARGC 命令行参数个数
2.ARGV 命令行参数排列
3.ENVIROV 支持队列中系统环境变量的使用
4.FILENAME awk浏览的文件名
5.FNR 浏览文件的记录数
6.FS 设置输入域分隔符,等于命令行 -F选项
7.NF 浏览记录的域个数
8.NR 已读的记录数
9.OFS 输出域分隔符
10.ORS 输出记录分隔符
11.RS 控制记录分隔符
字符串操作
连接: $1""$2 $1"-"$2
切分:$ awk '{BEGIN {print split("123#456#678", myarray, "#")}'
awk 正则
数组 [0-9]
多个 +
awk '$1~/[0-9]+\.$/{print $0}' 第一个字段包含多个数字后接句号的
awk接收shell变量
#!/bin/sh
file=$1
file_number=$2
awk '{n=NR%"'$file_number'";print "'$file_number'", n}' $file
双引号中套单引号:"'var'"
random产生随机数
AWKSCRIPT=' { srand(); print rand() } '
时间日期
echo 1 | awk '{print strftime("%Y-%m-%d %H:%M:%S",1285145446)}' http://gearbox.mst.edu/batch/awk.scripts.time1.html
Trim
In AWK, one can use regular expressions to trim:
ltrim(v) = gsub(/^[ /t]+/, "", v)
rtrim(v) = gsub(/[ /t]+$/, "", v)
trim(v) = ltrim(v); rtrim(v)
or:
function ltrim(s) { sub(/^[ /t]+/, "", s); return s }
function rtrim(s) { sub(/[ /t]+$/, "", s); return s }
function trim(s) { return rtrim(ltrim(s)); }