awk脚本
$0,意即所有域。 有两种方式保存shell提示符下awk脚本的输出。最简单的方式是使用输出重定向符号>文件名,下面的例子重定向输出到文件wow。
#awk '{print $0}' grade.txt > wow 第二种方法是使用tee命令,在输出到文件的同时输出到屏幕。
#awk '{print $0}' grade.txt | tee delete_me_and_die 打印field-1和field-4,
#awk '{print $1,$4}' grade.txt 打印信息头放置在BEGIN模式部分
#awk 'BEGIN {print "Name Belt\n----------------------"}{print $1"\t"$4}' grade.txt
END语句在所有文本处理动作执行完之后才被执行。
#awk 'BEGIN {print "Name Belt\n----------------------"}{print $1"\t"$4} END{"end-of-report"}' grade.txt 为使一域号匹配正则表达式,使用符号‘~’后紧跟正则表达式 如果只要打印brown腰带级别可知其所在域为field-4
可以写出表达式{if($4~/brown/) print $0}意即如果field-4包含brown,打印它。 匹配记录找到时,如果不特别声明,awk缺省打印整条记录。 if语句简写
#awk '$0 ~ /Brown/' grade.txt 匹配包含48的记录
#awk '$3~/48/ {print $0}' grade.txt 只匹配等于48,
#awk '$3=="48" {print $0}' grade.txt 不匹配符号是!~ 小于
awk '{if($6 < $7) print $1}' grade.txt 设置大小写可使用[]符号
查询文件中级别为green的所有记录,不论其大小写,
awk '/[Gg]reen/' grade.txt 第一域的第四个字符是a,使用句点.
#awk '$1 ~ /^...a/' grade.txt 或关系匹配
#awk '$0 ~ /(Yellow|Brown)/' grade.txt 复合表达式即为模式间通过使用下述各表达式互相结合起来的表达式:
&& AND : 语句两边必须同时匹配为真。
|| OR:语句两边同时或其中一边匹配为真。
! 非求逆
#awk '{if($1=="P.bunny" && $4=="Yellow") print $0}' grade.txt
#awk '{if($1=="P.bunny" || $4=="Yellow") print $0}' grade.txt awk内置变量
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行-F选项
NF 浏览记录的域个数
NR 已读的记录数
OFS 输出域分隔
ORS 输出记录分隔符
RS 控制记录分隔符 快速查看记录个数,应使用NR
#awk 'END {print NR}' grade.txt 使用NF变量显示每一条读记录中有多少个域,并在END部分打印输入文件名。
#awk '{print NF,NR,$0} END{print FILENAME}' grade.txt 检查文件中是否有记录。下面的例子只有在文件中至少有一个记录时才查询Brown级别记录。使用AND复合语句实现这一功能。
$awk '{if(NR>0 && $4~/Brown/) print $0}' grade.txt NF的一个强大功能是将变量$PWD的返回值传入awk并显示其目录。这里需要指定域分隔符/。
#pwd
/usr/local/etc
#echo $PWD | awk -F/ '{print $NF}'
etc 另一个例子是显示文件名
$echo "/usr/local/etc/rc.sybase" | awk -F/ '{print $NF}'
rs.sybase
awk脚本的更多相关文章
- awk 脚本同时解析多个文件
ARGC The number of command line arguments (does not include options to gawk ...
- 一些我后写出来的awk脚本
mail.awk function mailByShell(receiver, sender, subject, content, __ARGVEND__, xhead, xfrom, xmime, ...
- AWK 脚本编写习惯
教训总结: 不能忽略了脚本语言的编写规范! 创建数组的时候初始化,特别是在for循环中使用的数组: u_count[; g_count[; 认真对待对象,特别是数组的命名: username_to_d ...
- 一次awk脚本的重构
# 脚本功能说明: # . 检查URL中的域名是否是指定版本的域名 # . 对访问bid,authorid的游客身份排重,并累加其pv # 全局变量说明 # DOMIAN_LIST 是数组,key是要 ...
- awk脚本使用的几种方法
1. awk名包含在文件内 [root@nhserver1 08]# cat sample.txtaaabbbccc [root@nhserver1 08]# cat readsample.awkaw ...
- 【sed / awk脚本编写】
awk awk分为BEGIN部分,正则匹配部分,END部分三部分. 我一般在BEGIN部分定义一些变量,正则部分用于匹配和执行一些解析和统计,END部分用于输出结果. 总体结构: awk 'BEGIN ...
- 听说awk语言也可以编写脚本
导读 从 awk 系列开始,我们都是在命令行或者脚本文件里写一些简短的 awk 命令和程序.然而 awk 和 shell 一样也是一个解释型语言.通过从开始到现在的一系列的学习,你现在能写可以执行的 ...
- Linux Shell脚本入门--awk命令详解
简单使用: awk :对于文件中一行行的独处来执行操作 . awk -F :'{print $1,$4}' :使用‘:’来分割这一行,把这一行的第一第四个域打印出来 . 详细介绍: AWK命令介绍 ...
- shell脚本 awk工具
awk工具概述awk编程语言/数据处理引擎基于模式匹配检查输入文本,逐行处理并输出通常在shell脚本中,或取指定的数据单独用时,可对文本数据做统计 命令格式格式一:awk [选项] '[条件]{编辑 ...
随机推荐
- three.js透视投影照相机
透视投影照相机(Perspective Camera)的构造函数是: THREE.PerspectiveCamera(fov, aspect, near, far) 让我们通过一张透视照相机投影的图来 ...
- BZOJ4444 : [Scoi2015]国旗计划
首先将坐标离散化,因为区间互不包含,可以理解为对于每个起点输出最少需要多少个战士. 将环倍长,破环成链,设$f[i]$表示区间左端点不超过$i$时右端点的最大值,可以通过$O(n)$递推求出. 那么如 ...
- 创建第一个Hiberntae工程
一.前言 很久之前已经对Hibernate有所了解,在项目中进行过简单的应用,基本了解hibernate的简单应用,没有深入的了解,来Shine公司快三个月了,公司的ORM框架就是用Hiberante ...
- JS 特殊字符的魅力
特殊字符的魅力 说在前面—鸭子类型 鸭子类型是动态类型的一种风格,在这种风格中,一个对象有效的语义,不是由继承自特定的类或者实现特定的接口,而是由当前方法和属性的集合决定. “当看到一只鸟走起来像鸭子 ...
- topcoder SRM 618 DIV2 WritingWords
只需要对word遍历一遍即可 int write(string word) { ; ; i < word.length(); ++ i){ cnt+=word[i]-; } return cnt ...
- BZOJ 1083 题解
1083: [SCOI2005]繁忙的都市 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2431 Solved: 1596[Submit][Sta ...
- SPFA算法
SPFA算法 一.算法简介 SPFA(Shortest Path Faster Algorithm)算法是求单源最短路径的一种算法,它是Bellman-ford的队列优化,它是一种十分高效的最短路算法 ...
- Jquery_jquery中attr和prop的区别
在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了. 关于它们两个的区别,网上的答案很多.这里谈谈我的心得,我的心得很简单: ...
- CentOS转的服务器磁盘规划
我的服务器是500G.最重要的是/var分区一定要大(不论postfix邮件,还是LAMP的WEB 服务器等).最好是400G以上.具体的/boot 只要100M就足够了.下面是我的分区方案:硬盘50 ...
- 详解CALayer 和 UIView的区别和联系
详解CALayer 和 UIView的区别和联系 前言 前面发了一篇iOS 面试的文章,在说到 UIView 和 CALayer 的区别和联系的时候,被喵神指出没有切中要点,所以这里就 CALay ...