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的行。