awk编程根本使用示例
awk编程基本使用示例
对于每一行,如果第三列大于0,则打印第一列,第二列*第三列的值 awk `$3>0 {print $1,$2*$3}` file1 file2 -f指定执行程序的文件 awk -f programfile inputfile 打印整行输入 awk `{print}` 或者 awk `{print $0}` NR当前行数,NF当前行的列数,下面这个 是打印当前行的列数,第一列和最后一列 awk `{print NR, NF, $1, $NF}` 格式化输出,跟c语言格式化类似 awk `printf("%-8s %.2f", $1,$2*$3)` 排序 awk `$3>0 {print $1,$2*$3}` file1 file2 | sort 计算后再选择 awk `$3 * $2>50 {print $1,$2*$3}` file1 file2 awk `$1=="suite" {print $1,$2*$3}` file1 file2 awk `!($NF>5 || $NF < 2)" {print $1,$2*$3}` file1 file2 BEGIN 和 END BEGIN在处理输入前先执行BEGIN语句块 awk `BEGIN{print " name rate number:"}{print}` 统计第三列大于50的总数,在处理完输入之后最后输入第三列大于50的总数 awk `$3>50{$emp=$emp+1} END{print $emp}` 字符串拼接 awk `{$name=$name $1 " "} END {print $name}` 内置函数length awk `{print $1, length($1)}` if-else awk `$2>10{$n=$n+1,$pay=$2*3} END{if($n>0) print n else print "no"}` while语句 awk `i=1 while(i<$3){printf("%s",$3) i=i+1}` for awk `{for(i=1;i<$3;i=i+1)printf("%s",$3)}` arrays 逆序打印 awk `{line[NR]=$0} END {i=NR while(i>0){print line[i] i=i-1}}` 字段分隔符 awk `BEGIN{FS="\t"}{printf("$s %s",$1,$2) $cnt=$cnt+$2}END{print $cnt}` 正则匹配 $2包含字符串asia awk `$2 ~ /asia/ print $3` $2没有包含字符串asia awk `$2 !~ /asia/ print $3` 内置变量 FNR 需要读入的行数 FILENAME 读入的文件名 赋值到字段中 awk `BEGIN{FS=OFS="\t"} $2=="aaa" {$4="bbb"} $2=="ccc" {$4="ddd"}{print}` 内置数学函数 atan2(y,x) cos(x) exp(x) int(x) log(x) rand(x) sin(x) sqrt(x) srand(x) string内置函数 gsub(r,s) gsub(r,s,t) index(s,t) length(s) match(s,r) split(s,a) split(s,a,fs) sprinf() sub(r,s) substr(s,p) do statement while(expr) break continue next exit delete函数 for(i in pop) delete pop[i] 多维数组 pop[i,j] if((i,j) in arr) ...