awk
awk命令模式:
awk 'pattern { action }' input
pattern字段是可选的,用于执行逻辑判断。action字段必要的,用于操作,支持的内容就多了,可以打印,根据参数作运算等等。默认是根据空格或\t
来分列的。
测试输入样本:
Beth 4.00 0
Dan 3.75 0
kathy 4.00 10
Mark 5.00 20
Mary 5.50 22
Susie 4.25 18
打印首列:
awk '{print $1}' input
支持数字(整型、浮点型之间相互)比较:
awk '$3 <= 0 {print $1}' input
支持字符串比较:
awk '$1 == "Mary" {print $1}' input
支持||
和&&
:
awk '$3 <= 0 || $3 >= 22 {print $1}' input
awk '!($3 >= 0 && $3 < 22) {print $1}' input
pattern
字段支持运算:
awk '$3 * $3 > 9 {print $1}' input
以两个/
括起来的pattern
支持正则:
awk '/Ma.k/ {print $1}' input
支持逻辑取反符号:
awk '!/Ma.k/ {print $1}' input
支持多个输入文件:
awk '{print $1}' input1 input2
支持从文件读取命令:
awk -f executefile input
打印整行:
awk '{print $0}' input
awk '{print}' input
不清楚有多少列,打印最后一列:
awk '{print $NF}' input
打印列数:
awk '{print NF}' input
支持计算:
awk '{print $2 * $2 * $3}' input
,
号会被输出成空格,打印多列需用,
分隔:
awk '{print $2,$3}' input
打印行号:
awk '{print NR}' input
插入常量字符串:
awk { print "total pay for", $1, "is", $2 * $3 } input
使用printf
进行格式化输出:
awk '{ printf("total pay for %s is %.2f\n", $1, $2 * $3) }' input
改变分隔符(-F须放在前面):
awk -F ">" '{print $3}' input
awk -F "," '{print $3}' input
支持以[]
和:
隔开多个分隔符(不能有空格,顺序无关):
awk -F [",":"|"] '{print $3}' input