sed&awk

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

猜你喜欢

转载自www.cnblogs.com/xcw0754/p/10046413.html