awk是一个文本处理语言。
一、工作流程:
awk分为三个代码块:BEGIN{}、{}、END{}。
BEGIN{}:为读入文件之前执行的代码段。可选,程序中可以没有此内容。
{}:循环逐行读取数据并进行匹配处理。每输入一行,执行一次此命令。将文件按指定的域分隔符划分域,填充域,$0表示所有域,$1表示被分割之后的第一个域,$n表示被分割之后的第n个域。
END{}:文件读取结束后执行的代码。
二、awk的内置函数:
算术函数 | atan2(y,x)、cos(x)、sin(x)、exp(x)、log(x)、sqrt(x)、int(x)、rand(x)、srand([Expr]) |
|
字符串函数 | gsub(Ere, Repl,[In]) | global substitution全局替换 |
| sub(regex, sub, string) | 执行一次字符串替换,将第一次出现的字符串用regex代替,第三个参数可选,默认为$0。 |
| substr(str, start, l) | substr函数返回str字符串中从start个字符开始长度为l的字符串。如果l未指定,则返回至末尾。 |
| index(String1,String2) | 在由String1参数指定的字符串中有出现string2参数指定的字符串,返回从1开始的位置编号,否则返回0。 |
| length[(string)]/blength[(string)] | 返回string参数指定的字符串的长度,如果未给出string参数,则返回整个记录的长度($0记录变量)。blength[(string)]以字节为单位。 |
| substr(string,M,[N]) | 获取N长度的字符串。字符串为string中M为开始,N个字符串长度的字符。 |
| match(String, Ere) | 返回Ere在string中的位置,如果没有返回0。RSTART 特殊变量设置为返回值。RLENGTH 特殊变量设置为匹配的字符串的长度,或如果未找到任何匹配,则设置为 -1 |
| split(String, A, [Ere]) | 将 String 参数指定的参数分割为数组元素 A[1], A[2], . . ., A[n],并返回 n 变量的值。此分隔可以通过 Ere 参数指定的扩展正则表达式进行,或用当前字段分隔符(FS 特殊变量)来进行(如果没有给出 Ere 参数)。除非上下文指明特定的元素还应具有一个数字值,否则 A 数组中的元素用字符串值来创建。 |
|
|
|
三、其它函数
exit:结束脚本程序的执行。该函数接受一个整数作为参数表示AWK进程结束状态。例如:
exit(10)
echo $?的返回值为10。