AWK 是一个套程序,不是一个命令,我们一般使用的是这套程序的命令行模式。

1. 基础语法

awk 动作 文件名

示例1:

awk '{print $0}' awk.txt

括号里面的就是动作部分,print打印 $0整行,结果是把awk.txt文件整行整行打印出来。

示例2:

echo "Hello world! Hello China" | awk '{print $0}'

以标准输入作为参数,结果也是把整行打印出来。

awk会根据空格和制表符,将每一行分成若干字段,依次用$1、$2、$3代表第一个字段、第二个字段、第三个字段等等。

$2 表示 workd!,$4就是表示China

awk默认的分隔符是空格和制表符,我们可以用参数指定分隔符。

awk -F ':' '{ print $1 }' awk.txt

2.变量

除了$ + 数字表示某个字段,awk还提供其他一些变量。

变量NF表示当前行有多少个字段,因此$NF就代表最后一个字段。

echo "Hello world! Hello China" | awk '{print $NF}'

相当于打印$4,($NF-1)表示倒数第二段

awk -F ':' '{print $1, $(NF-1)}' awk1.txt

,表示打印第一段,跟倒数第二段中间用空格分开

awk -F ':' '{print NR ") " $1}' awk.txt

NR 表示第几行

3.条件

语法

awk '条件 动作' 文件名

示例:

awk -F ':' '/hello/ {print $1}' awk.txt

print命令前面是一个正则表达式,只输出包含hello的行。