Linux_JXNUSixWeek_Linux三剑客—awk

发布时间 2023-10-04 10:44:47作者: 次林梦叶

image

晚安,纺凪
Dreamin' Her - 僕は、彼女の夢を見る。


awk简介

image

  • 具体基本用法:
    image

image
awk '$3>0{print $1,$2*$3}' emp.data

awk与sed一样,都是每一次读取一行,对一行进行处理后,继续进行下一行的处理
$3表示一行中的第3列,其余同理
$3>0 被称为模式,{}中的指令被称为动作
每一行中如果存在符合模式的数据,那么就执行动作

awk '$3>0{print $1,$2*$3}$3==0{print $1,'no work'}' emp.data

如上可以多个模式动作一起写


image

如果要将命令写进文件中,则如上

image

同时我们可以省略动作,print是默认的动作,他会打印整行

image

我们也可以省略模式,即默认没有什么约束条件


字段与内置变量,输出和选择

image

awk '{print NR","$0}' emp.data
我们之前直接用,则行中各列默认是以空格分隔的,现在用“,”,则相当于将NR与$0之间以“,”拼接一样,则是以,为分隔的

还有更好的用的方法是:
awk '{printf("%d,$s\n",NR,$0)}' emp.data

我们可以用c语言中的printf继续输出,但需要注意的是printf是不默认输出\n的,需要手动添加


image
image

上面两种写法是等价的


image

我们甚至可以使用c中的运算符