0.了解awk命令结构
1.仅执行action
awk '{action}' filename
2.仅根据pattern搜索
awk 'pattern' filename
3.结合
awk 'pattern {action} ' filename
1.使用actions
示例文本:
-F选项来定义输入分隔符(在本例中为冒号),默认情况下分隔符是空格。
由于使用冒号作为分隔符,每行中有两个单词(或称为字段)。
$NUMBER语法用于指定要使用的字段。
关于$NUMBER语法,有几点需要知道:
1. 它从$1开始,而不是$0($1是第一个字段,$2是第二个字段,依此类推)
2. $0代表整行的文本
3. $NF代表最后一个字段。使用$(NF-1)表示倒数第二个字段,依此类推
2.actions加入BEGIN, END
用于在action之前和之后执行动作
上面的例子在 {print $0} 动作之前和之后打印了一些有用的信息。实际上,我们也可以在 BEGIN 动作中定义输入分隔符,而不是使用 -F 选项,这将使程序更清晰。
3.使用内置函数
4.使用if-else语句
当一行文本的第一个字段等于“name”时,打印第二个字段:
添加else语句:
5.在pattern中使用正则
正则表达式可以放在两个斜杠之间,如下所示:
默认情况下,模式将尝试匹配每一行的整个文本。如果我们想匹配特定的字段,只需在模式的开头添加该字段,并且不要忘记一个特殊的~以遵循awk的语法。
如上所示,模式只匹配每行的第一个字段
6.结合使用pattern和action
把action用花括号括起来,来区分模式和动作。
注意模式和动作的顺序,如果调换顺序结果也不同
7.awk脚本
我们可以创建一个count_words.awk脚本:
使用该脚本
(原文)