(3)awk命令行结构和语法结构
awk命令行结构和语法结构
awk命令行结构
awk [ -- ] program-text file ... (1) awk -f program-file [ -- ] file ... (2) awk -e program-text [ -- ] file ... (3)
其中
program-text即awk命令行中awk代码部分,一般使用单引号包围。 -f program-file表示awk代码部分写在文件中,然后使用-f选项去引用这个文件。 -e program-text也表示使用awk代码块,所有语法1和语法3基本是等价的,但是如果使用-f,又要在代码行中写awk代码,则必须使用-f和-e,即awk -f file -e 'awk-code',而不能是awk -f file 'awk-code'。
awk语法结构
awk语法结构即awk代码部分的结构。
awk的语法充斥着pattern{action}
的模式,它们称为awk rule。
关于awk的语法: 多个pattern{action}可以直接连接连用 action中多个语句如果写在同一行,则需使用分号分隔 pattern部分用于筛选行,action表示在筛选通过后执行的操作 pattern和action都可以省略 省略pattern,等价于对每一行数据都执行action 例如:awk '{print $0}' a.txt 省略代码块{action},等价于{print}即输出所有行 例如:awk '/Alice/' a.txt等价于awk '/Alice/{print $0}' a.txt 省略代码块中的action,表示对筛选的行什么都不做 例如:awk '/Alice/{}' a.txt pattern{action}任何一部分都可以省略 例如:awk '' a.txt
pattern和action
对于pattern{action}
语句结构(都称之为语句块),其中的pattern部分可以使用下面列出的模式:
# 特殊pattern BEGIN END # 布尔代码块 /regular expression/ # 正则匹配成功与否 /a.*ef/{action} relational expression # 即等值比较、大小比较 3>2{action} pattern && pattern # 逻辑与 3>2 && 3>1 {action} pattern || pattern # 逻辑或 3>2 || 3<1 {action} ! pattern # 逻辑取反 !/a.*ef/{action} (pattern) # 改变优先级 pattern ? pattern : pattern # 三目运算符决定的布尔值 # 范围pattern,非布尔代码块 pattern1, pattern2 # 范围,pat1打开、pat2关闭,即flip,flop模式