awk基础

1、awk 语法分模式和操作
模式由正则表达式或判别条件真伪的表达式组成,或者2者的组合
默认操作是打印符合表达式要求文本行
例子
awk -F'[ ;,]' '/jom/{print $1,$2,$3}' file
等价awk -F'[ ;,]' '$0 ~ /jom/{print $1,$2,$3}' file
操作是{}中以分号分隔的语句
操作前面可以有模式
同一行的语句由分号分隔,独占一行则有换行符分隔

内部变量
$0 输入文件的每一行
行被空格分隔为单词,每个单词存储在$1--$n的变量中

NR 每行的行号
NF 每行被分隔符分成几个字段
awk -F:  冒号分隔符
awk -F'[ ;/]' 三个分隔符 空格分号斜杠


2、字符串和数字之间的转换
number=35
name="abf"
字符串强转为数字
name + 0
数字强转为字符串 number ""

3、begin模式
必需在对输入文件进行任何操作之前执行,begin通常被用来修改内置变量(OFS、RS、FS等)、为用户自定义变量赋初始值

end模式
awk处理完所有输入行之后处理end模式

4、输入重定向
getline函数用于从标准输入、管道或者文件(非当前处理的文件)中读取输入
# awk 'BEGIN{"date" | getline d;split(d,mon);print mon[2]}'
# May

#awk 'BEGIN{while("ls" | getline d) s[x++]=d} {for(item in s){print s[item] }}'

[root@localhost redis]# awk 'BEGIN{while (getline < "/etc/passwd" >0 )lc++;print lc}'
35

输出重定向
#cat CheckLaunch.log.2012-05-17 | awk -F'[=,]' '$9==2 && $31==1 {print $8,"--"$9,"--"$30,"--"$31,"--"$32,"--"$33 >> "test.log"}'
重定向的文件用双引号括起来

awk中的管道
每次只能打开一个管道,必需关闭才能打开另外一个管道
管道右边的命令行被括在双引号中间

3、数组在awk中称关联数组,下标可以是数字也可以是字符串

你可能感兴趣的:(awk)