perl
语言中的AWK之基础篇
一
:AWK与perl
二:AWK简介
三:
AWK处理文本的流程:
四:
AWK的使用
- AWK的 语法格式:
- Awk [options] ‘scritpts’ filename
- 或者awk [options] ‘partern [actions] ’ filename
- [options]:
- -F: 指定awk 处理文本的行时的分隔符
- 常用的awk内置的三个变量 OFS FS NF
- -FS 指定字段分隔符
- 例如
- Awk -v FS=: ‘{print $2}’ /etc/passwd
- -v OFS= 定义awk 输出时的字符分隔符
- 例如: Awk –v OFS=# ‘{print $1,$2}’ /etc/passwd
- NF 表示awk处理一行时的字段总数
- 例如:输出一行的最后一个字段
- Awk ‘{print $NF}’ /etc/passwd
- 注:显示一行的倒数第三个字段
- printf 的使用
- 格式:printf format item1,item2,……
- 注意:
- 1:与print命令的最大不同是,printf 需要指定format
- 2:format用于指定后面的每个item的输出格式
- 3:printf语句不会自动打印换行符 \n
- 4:format格式的指示符都以%开头,后跟一个字符
- format:
- %c :显示字符的ASCII码
- %d,%i :显示字符的十进制整数
- %e,$E 科学计数法显示数值
- %f :显示浮点数
- %g ,%G :以科学计数法的格式或者浮点数的格式显示数值
- %s 显示字符串
- %u 显示无符号整数
- %% 显示%自身
- 另外format 还可以添加修饰符
- N:显示宽度
- -:左对齐
- +:显示数值符号
- 例如:
awk的操作符:
- 算术操作符:
- -x: 负值
- +x: 转换为数值;
- x^y:
- x**y: 次方
- x*y: 乘法
- x/y:除法
- x+y:
- x-y:
- x%y:
- 字符串操作符:
- 只有一个,而且不用写出来,用于实现字符串连接;
- 赋值操作符:
- =
- +=
- -=
- *=
- /=
- %=
- ^=
- **=
- ++
- --
- 需要注意的是,如果某模式为=号,此时使用/=/可能会有语法错误,应以/[=]/替代;
- 布尔值
- awk中,任何非0值或非空字符串都为真,反之就为假
- 比较操作符:
- x < y True if x is less than y.
- x <= y True if x is less than or equal to y.
- x > y True if x is greater than y.
- x >= y True if x is greater than or equal to y.
- x == y True if x is equal to y.
- x != y True if x is not equal to y.
- x ~ y True if the string x matches the regexp denoted by y.
- x !~ y True if the string x does not match the regexp denoted by y.
- subscript in array True if the array array has an element with the subscript subscript
- 表达式间的逻辑关系符:
- &&
- ||
- 条件表达式:
- selector?if-true-exp:if-false-exp
- selector :条件表达式
- if-true-exp:statement
- if-false-exp: statement
- 下面我们来重点说说awk的模式使用
- awk的模式:
- awk [options] ‘parten’ ‘print ….’ filename
- parten:
- 1:正则表达式 格式为/regular expression/
- 2: 表达式 其值非0或者非空字符时满足的条件 例如:$1 ~ /user/ 或者 $1 == ‘user’
- 用运算符~(匹配)和 ~ !(不匹配)
- 例如:
空模式是指 :匹配所有行
由于篇幅限制字数限制不能全部介绍,如有错误,还望多多指正,多多讨论,谢谢。下篇
将继续awk的循环控制语句的使用,