高级过滤器awk
2014-05-26 20:19
169 查看
一、简单过滤功能
awk '/abc/{print}' test
awk '/abc/' test
awk '/abc/{print $0}' test
说明:默认情况下可以不加print
二、把一行拆分成字段
awk -F"|" '/abc/ {printf $2 $3}' test (意思是以|为分隔符,搜索有abc的行并输出第二个和第三个字段的字符)
awk -F "|" 'NR==3,NR==6' test (输出第3行到第六行)
说明:$0 是整行,默认情况下以空百串为分隔符
三、printf格式化输出
awk '/^int/{printf "%d %-10s %10s\n",NR,$1,$2}' test.cpp (按照printf的格式输出字段,NR是行号,-10表示左对齐,正10表示右对齐)
四、awk中变量和表达式
(1)awk中没有数据类型,自定义的变量也不需要初始化,默认为0或者空字符串
(2)变量区分大小
(3)八进制数前要用\,十六进制前面要用\x
(4)awk没有连接字符串的运算符,只要把字符串排列在一起就可以自动合并
(5)以下为以下例子
1、x = “5”;print x;
2、x= 'sum";y="com“
print x y (结果是 sumcom)
print x"."y (sum.com)
3、 x="5";y=6;z="A"
print xy (56)
print x+y (11)
print y+z (6)
说明:如果字符串里面不含数字字符的时候,awk就把它当做是0
if(x) 只有当x是一个非空字符串或者是一个正数的时才为真
五、根据字段筛选信息
awk -F ”|“ ‘$3==”abc" || $4==“efg” {printf %s, $1}' test (注意这里的是全匹配,而不是部分匹配)
awk -F "|" 'S3 ~/abc/ {printf %s, $1}' test (用~来匹配部分,取反用!~)
awk '$2 > 10 {printf %s, $1}' test (数值比较)
六、变量
awk -F "|" '$3>10{count++ printf “%d %s”,count,$0}' test
七、-f可选项,从文件中读取awk程序
假设example.awk文件里面保存如下($3>10{count++ printf “%d %s”,count,$0})
则命令awk -F “|” -f example.awk test
说明:文件中的命令不需要添加引号
八、BEGIN段和END段
awk -F "|" '{BEGIN printf "begin program"} $3>10{count++ printf “%d %s”,count,$0} {END printf "end program"}' test
说明:begin与end用来输出一下头和尾的信息,这里可用#注释语句
九、内置变量
NR 行号
FS 输入字段的分隔符
OFS 输出字段的分隔符
NF 一行内的字段个数
FILENAME 当前的输入文件名
ARGC 命令行的参数个数
ARGV 参数列表
awk '/abc/{print}' test
awk '/abc/' test
awk '/abc/{print $0}' test
说明:默认情况下可以不加print
二、把一行拆分成字段
awk -F"|" '/abc/ {printf $2 $3}' test (意思是以|为分隔符,搜索有abc的行并输出第二个和第三个字段的字符)
awk -F "|" 'NR==3,NR==6' test (输出第3行到第六行)
说明:$0 是整行,默认情况下以空百串为分隔符
三、printf格式化输出
awk '/^int/{printf "%d %-10s %10s\n",NR,$1,$2}' test.cpp (按照printf的格式输出字段,NR是行号,-10表示左对齐,正10表示右对齐)
四、awk中变量和表达式
(1)awk中没有数据类型,自定义的变量也不需要初始化,默认为0或者空字符串
(2)变量区分大小
(3)八进制数前要用\,十六进制前面要用\x
(4)awk没有连接字符串的运算符,只要把字符串排列在一起就可以自动合并
(5)以下为以下例子
1、x = “5”;print x;
2、x= 'sum";y="com“
print x y (结果是 sumcom)
print x"."y (sum.com)
3、 x="5";y=6;z="A"
print xy (56)
print x+y (11)
print y+z (6)
说明:如果字符串里面不含数字字符的时候,awk就把它当做是0
if(x) 只有当x是一个非空字符串或者是一个正数的时才为真
五、根据字段筛选信息
awk -F ”|“ ‘$3==”abc" || $4==“efg” {printf %s, $1}' test (注意这里的是全匹配,而不是部分匹配)
awk -F "|" 'S3 ~/abc/ {printf %s, $1}' test (用~来匹配部分,取反用!~)
awk '$2 > 10 {printf %s, $1}' test (数值比较)
六、变量
awk -F "|" '$3>10{count++ printf “%d %s”,count,$0}' test
七、-f可选项,从文件中读取awk程序
假设example.awk文件里面保存如下($3>10{count++ printf “%d %s”,count,$0})
则命令awk -F “|” -f example.awk test
说明:文件中的命令不需要添加引号
八、BEGIN段和END段
awk -F "|" '{BEGIN printf "begin program"} $3>10{count++ printf “%d %s”,count,$0} {END printf "end program"}' test
说明:begin与end用来输出一下头和尾的信息,这里可用#注释语句
九、内置变量
NR 行号
FS 输入字段的分隔符
OFS 输出字段的分隔符
NF 一行内的字段个数
FILENAME 当前的输入文件名
ARGC 命令行的参数个数
ARGV 参数列表
相关文章推荐
- awk的几个常用高级用法
- awk文本处理总结(入门,中级,高级)
- AWK高级编程 转载
- awk高级进阶
- AWK高级运用
- awk的高级应用
- Unix整理笔记——高级命令sed和awk——里程碑M10
- PHP-Smarty模板引擎-翻译-手册-第15章高级特性-输出过滤器
- Java Web高级特性之(一)过滤器
- awk 高级应用和$NF用法
- awk文本处理总结(入门,中级,高级)
- *Linux Shell 高级编程技巧1----深入讨论(awk、<<)
- 使用awk进行高级文本处理
- shell-awk高级应用
- JavaWeb-过滤器高级案例、URL过滤系统
- smarty高级特性之过滤器的使用方法
- linux awk高级应用实例
- 快速掌握awk linux#高级程序员必备技能#
- netty源码分析(十)ChannelPipeline创建时机与高级拦截过滤器模式的运用
- Google Analytics功能篇—高级过滤器