awk 命令使用笔记

awk ‘{print $1”补充字段"}’
默认以空格或tab分割,$0代表整行,$1代表分割后的第一个单词,以此类推,上面例子会打印出分隔符后第一个单词和“补充字段”。
 
 
awk -F : ‘/关键字/’ ./filename
eg:awk -F: '/update/'  ./ids.sql
 
这里 -F 代表以什么符号分割,//中间是关键字 用来获取有这个关键字的行。
 
 
awk -F ‘分隔符’ BEGIN {print “列名1,列名2”} END {print “补充字段,补充字段”}’
eg:cat ids.sql | awk -F 'company_id' 'BEGIN {print "name,shell"} {print $1","$2} END {print "blue,/bin/nosh”}’
这里BEGIN END 是指会按顺序执行awk 语句,注意这里 BEGIN 和 END 要大写,否则无效
 
 
awk '{printf "select * from %s where id = %s;\n", $2, $6}'
eg: cat ids.sql | awk '{printf "select * from %s where id = %s;\n", $2, $6}’
printf 比 print更整洁
 
 
awk编程
cat ids.sql | awk 'BEGIN {count=0; print "count is ", count} {count += 1;} END {print "end count is ", count}’
awk 命令使用笔记
循环获取总行数,count初始化为0,并打印出来
    ls -l |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ", size}
    统计某个文件夹下的文件占用的字节数
 
 
awk 使用for循环打印数组,将每行的某个值作为数组中的一个元素,end时遍历数组打印数组***和数组元素值。
awk -F 'id=' 'BEGIN {count=0;} {name[count]=$3; count++;} END {for(i = 0; i<10; i++) print i, name[i]}'
eg:cat ids.sql | awk -F 'id=' 'BEGIN {count=0;} {name[count]=$3; count++;} END {for(i = 0; i<10; i++) print i, name[i]}'
awk 命令使用笔记