正则表达式-awk
时间:2010-04-06 来源:cainoma
元字符
^ # 串首匹配
$ # 串尾匹配
. # 匹配单个任意字符
* # 匹配零个或多个前导字符
+ # 匹配一个或多个前导字符
? # 匹配零个或一个前导字符
[ABC] # 匹配制定字符组中任一字符
[^ABC] # 匹配任何一个不再指定字符组的字符
[A-Z] # 匹配A至Z之间任一字符
A|B # 匹配A或B
(AB)+ # 匹配一个或多个AB的组合,eg:AB. ABAB.ABABAB
\* # 匹配星号本身
& # 用在替代串中,代表查找串中的匹配到的内容
如下元字符,大多数版本的grep和sed都支持.但awk都不支持
\<>/ # 单词定位
\(\) # 向前引用
\{\} # 重复
接触的第一个实例
awk -v RS="'" '/@/&&!a[$0]++' file # RS:制定'为换行符
这句话的意思:将file中 将带有@的行筛选出来,并去掉重复的
1 文件内容作为输入
# awk '/heihei/' file # 从file中打印出有heihei的行
# awk '{print $1}' file # 打印出每行第一列(默认是空格分隔符)
# awk '/heihei/{print $1,$2}' file
# 打印有heihei行的前两列
2 命令结果作为输入
# df | awk '$4 > 50' # 打印出df结果中第四列大于50的
3 格式化输出
3.1 print函数
# print函数使用的转义序列
\b 退格
\f 换页
\n 换行
\r 回车
\t 制表符
\047 八进制47,即单引号
\c C代表任一其他字符,例如“\”
# date | awk '{ print "Month: " $2 "\nYear: " $6}'
# 打印date结果的第一行和第六行,且竖着排列
# awk '/heihei/{print "\t\tHave a nice day, " $1 "\!"}' file
tHave a nice day,heihei!
# 第一行第一个字段就是Heihei
# 包含heihei,就打印出如上行
3.2 OFMT:控制数字打印格式,默认值%.6gd:只打印小数部分前6位
# awk 'BEGIN{OFMT="%.2f"; print 1.2456789, 12E-2}'
1.25 0.12
3.3 printf函数 格式化输出结果 调整空格数并相应对齐(156页)
3.4 awk脚本
3.5 记录与字段 (159页)
ORS 分隔符
RS 换行符
NR 记录号
NF 字段数
记录:行
字段:列
eg: $1 $2
tom jones
#awk '{print NR, $1, $2}' file
1 tom jone
awk 整体概括
6.1 什么是awk nawk gawk
6.2 awk的格式
6.3 awk工作原理
6.4 格式化输出
6.5 文件中的awk命令
6.6 记录与字段
6.7 模式与操作
6.8 正则表达式
6.9 脚本文件中的awk命令
6.10 复习
6.11 比较表达式
6.12 复习
6.13 变量
6.14 重定向和管道
6.15 管道
6.16 回顾
6.17 条件语句
6.18 循环
6.19 程序控制语句
6.20 数组
6.21 awk的内置函数
6.22 内置算术函数
6.23 用户定义函数(nawk)
6.24 复习
6.25 杂项
6.26 awk内置函数
相关阅读 更多 +