awk分别代表其作者姓氏的第一个字母。
awk 基础
awk语法有两种形式:
awk [-F ERE] [-v assignment] 'program' [argument ...]
awk [-F ERE] -f progfile ... [-v assignment] ...[argument ...]
注意:第一种形式的 命令(program) 必须是用单引号引起。 awk -v a='a b c' 'BEGIN {print a; a=123} END{print a}'
标准的awk命令行参数主要由以下三个:
- -F ERE:定义字段分隔符,该选项的值可以是一个字符串或扩展的正则表达式(ERE),如:
-F:
表示以冒号分隔字段。 - -f progfile:指定awk脚本,可以同时指定多个脚本,它们会按照在命令行中出现的顺序连接在一起。
- -v assignment:定义awk变量,形式同awk中的变量赋值,即name=value,赋值发生在awk处理文本之前。
awk是一种编程语言,逐行扫描文件,寻找匹配特定模式的行,并在这些行上执行操作。
awk可以同时指定多个输入文件,如果输入文件的文件名为-
,表示从标准输入读取内容。
Awk的输入被解析成多个记录(Record),默认情况下,记录的分隔符是 \n
,因此可以认为一行就是一个记录,记录的分隔符可以通过内置变量RS更改。当记录匹配某个pattern
时,才会执行后续的action
命令。
而每个记录又进一步地被分隔成多个字段(Field),默认情况下字段的分隔符是空白符,例如空格、制表符等等,也可以通过-F ERE选项或者内置变量FS更改。在awk中,可以通过 $1,$2…
来访问对应位置的字段,同时 $0
存放整个记录,这一点有点类似shell下的命令行位置参数。