awk是linux环境中,类似于代码中的正则表达式的一种语法糖。

awk的语句主要分为三个部分:
一是BEGIN,这个部分主要是完成初始化工作,只执行一次,可有可无。
然后是重复执行的部分,repeat。这个部分针对每一个匹配项执行一次相应的操作。
最后是END部分,一般完成收尾操作,只执行一次,可有可无。
首先,我们创建一个文本,vi marks.txt
- 1) Learnfk Physics 80
- 2) Toolfk Maths 90
- 3) Chromefk Biology 87
- 4) Poemfk English 85
- 5) Nesfk History 89
先来看看内容:

我们尝试使用awk语句,在marks.txt文本的前面加一句"This is the title."
awk 'BEGIN{printf "This is the title.\n"} {print}' marks.txt
在文本的前面真的打印出了这个句子,说明BEGIN是首先执行的,并且只执行一次

我们可以直接执行重复的语句
awk '{print}' marks.txt

vi command.awk

然后使用awk -f command.awk marks.txt执行

效果和直接执行是一样的。
使用-v可以指定变量,例如
awk -v name=Bob 'BEGIN{printf "hello, %s\n", name}{print}' marks.txt
我们可以直接使用awk指定的变量。