AWK 是什么
AWK is a programming language designed for text processing and typically used as a data extraction and reporting tool.
( AWK是一门为文本处理而设计,通常用于数据分析和报表工具的程序语言。)
https://en.wikipedia.org/wiki/AWKAWK是一种优良的**文本处理工具**,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。
出现背景
- 时间: 1977年
- 人物: Alfred Aho, Peter Weinberger, and Brian Kernighan
(译作:阿尔佛雷德·艾侯
、彼得·温伯格
和布莱恩·柯林汉
) - 功能: 用于文本处理 (按行处理)
参数形式
模式 { 行为 } | pattern { ACTIONS }
例如: awk ‘BEGIN { print “Hello wold!” }’
输出:
Hellow wold!
输出命令
输出当前记录(默认空格
分割)的第一,第二,第三个块字符串($0
代表一整行)
print $1,$2,$3
内置变量
域
(Field
),$1, $2, $3 第一,第二,第三块字符串 ($0 represents the entire record)NR
: 当前记录数NF
: 总记录数FILENAME
: 包含当前文件FS
: 分割付,默认一个空格,等价于命令行 -F选项RS
: 保存当前记录分隔符.默认换行.OFS
: 保存输出字段分隔符.默认空格.ORS
: 保存输出行分隔符. 默认换行.OFMT
: 保持格式化后的数字. 默认格式”%.6g”.
示例:
BEGIN { # Can be modified by the user
FS = ","; # Field Separator
RS = "n"; # Record Separator (lines)
OFS = " "; # Output Field Separator
ORS = "n"; # Output Record Separator (lines)
}
{ # Can't be modified by the user
NF # Number of Fields in the current Record (line)
NR # Number of Records seen so far
ARGV / ARGC # Script Arguments
}
行为
{ print $0; } # prints $0. In this case, equivalent to 'print' alone
{ exit; } # ends the program
{ next; } # skips to the next line of input
{ a=$1; b=$0 } # variable assignment
{ c[$1] = $2 } # variable assignment (array)
{ if (BOOLEAN) { ACTION }
else if (BOOLEAN) { ACTION }
else { ACTION }
}
{ for (i=1; i<x; i++) { ACTION } }
{ for (item in c) { ACTION } }
BEGIN/END 规则 ^1
A BEGIN rule is executed once only, before the first input record is read.
仅在所有的行都输入到文件之前进行匹配。
an END rule is executed once only, after all the input is read.
在所有的输入都被处理完后进行匹配。
awk 'BEGIN {print "Hello wold!"} END {print "AWK!!"}' filenames
# 输出 Hello wold!\nAWK!!
常用命令
awk --version # 查看版本
awk ‘BEGIN { print “Hello wold!” }’ # 输出 Hello world