一位博友关于awk学习注意的地方,贴出来与大家分享一下。
2014-06-10 16:40
423 查看
awk的出错提示不怎么友好,经常报错让摸不着头脑,所以要对它的格式某些地方特别敏感!这里我根据经验特别说明如下几点:
1、awk 后面的语句一定要有两个’’ 包含起来!
2、一定要有一个文本的输入,可以放在后面,如本例的file,也可以通过管道符如|传给awk
如 ls |awk ‘{print $1}’ 这个时候的输入文件就是把ls的结果输给awk去处理!
3、-F参数是用来控制分割符的,比如 cat ljb.txt |awk –F “;” ‘{print $1,$2}’表示将ljb.txt文件中的内容的分号做为分割符,打印出第一列和第二列的值。这里要特别注意awk –F”;” 命令中,-F和”;”是没有空格的。
4、awk中的==表示等于,而=表示赋值,如果输错了,结果就完全错了。
比如 cat ljb.txt |awk ‘{if($3==6) print $0}’表示如果ljb.txt中默认以空格分割,假如第三列值为6,打印出来,如果这里将==写=,那就会打印出所有的值,其中第三列都被更新为6!
5、判断语句要有括号
如if($3==6)
6、这里我跳出AWK说一下SHELL,SHELL的[]中往往是判断,类似为
if [ $1=2 ]等,这里有别于awk,shell这个时候其实就是表示等于而不是赋值,如果你把=改写成两个=的==,那反而出错了,另外SHELL中也要留意,这里[]中的代码不能顶在[]的两边,如:[$1=2]或者是[$1=2 ]和[ $1=2]都是错误的!
7、整理了shell比较有别于其他编写程语句的一些特定脚本写法,现将awk 相关部分特别含义写法整理如下:
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行- F选项
NF 浏览记录的域个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
1、awk 后面的语句一定要有两个’’ 包含起来!
2、一定要有一个文本的输入,可以放在后面,如本例的file,也可以通过管道符如|传给awk
如 ls |awk ‘{print $1}’ 这个时候的输入文件就是把ls的结果输给awk去处理!
3、-F参数是用来控制分割符的,比如 cat ljb.txt |awk –F “;” ‘{print $1,$2}’表示将ljb.txt文件中的内容的分号做为分割符,打印出第一列和第二列的值。这里要特别注意awk –F”;” 命令中,-F和”;”是没有空格的。
4、awk中的==表示等于,而=表示赋值,如果输错了,结果就完全错了。
比如 cat ljb.txt |awk ‘{if($3==6) print $0}’表示如果ljb.txt中默认以空格分割,假如第三列值为6,打印出来,如果这里将==写=,那就会打印出所有的值,其中第三列都被更新为6!
5、判断语句要有括号
如if($3==6)
6、这里我跳出AWK说一下SHELL,SHELL的[]中往往是判断,类似为
if [ $1=2 ]等,这里有别于awk,shell这个时候其实就是表示等于而不是赋值,如果你把=改写成两个=的==,那反而出错了,另外SHELL中也要留意,这里[]中的代码不能顶在[]的两边,如:[$1=2]或者是[$1=2 ]和[ $1=2]都是错误的!
7、整理了shell比较有别于其他编写程语句的一些特定脚本写法,现将awk 相关部分特别含义写法整理如下:
ARGC 命令行参数个数
ARGV 命令行参数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk浏览的文件名
FNR 浏览文件的记录数
FS 设置输入域分隔符,等价于命令行- F选项
NF 浏览记录的域个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
相关文章推荐
- 一些关于Castle + Nhibernate+ ASP.NET的资源,我收集了一下,发布出来,供大家学习方便。
- 公司线上的 MySQL 慢日志,之前一直没有做好监控。趁着上周空闲,我就把监控脚本写了下,今天特地把代码发出来与51博友分享一下。 针对脚本的注解和整体构思,我会放到脚本之后为大家
- Java学习心得(看到后觉得很好,在博客上分享一下,希望对大家有启发)
- 关于指针详解!转自CSDN论坛,自己学习的同时和大家分享下!
- ORACLE安装心得,大家一起分享,假设不正确的地方,大家请指出来
- 分享几个开源的项目,大家交流学习一下
- 分享关于JAVA 中使用Preferences读写注册表时要注意的地方
- (最近学习过程中发现的,觉得不错,和大家分享一下)MFC中OnDraw与OnPaint的区别
- 今天跟大家分享一下关于input框获取焦点和失去焦点的问题。
- 用Qt写了一个qq客户端,采用webqq协议,发出来和大家分享一下---大神请无视
- 关于网站的推广方面,自己的一些愚见和大家分享一下。
- 关于幻灯片配置问题和大家分享一下
- JAY的最新专集《七里香》终于出来了,大家分享一下
- 继续为大家分享一下自己的js小插件,方便大家学习交流
- 新人刚开始学习java总结一下StringBuffer和StringBuilder的区别及一些知识,不对的地方还望大家指出让我早日改正
- 编写学习的java几种常用数组的排序方法,给大家分享一下
- 大家常用的logg4j整理出来分享一下
- 找了份工作, 会涉及到STM32芯片. 把最近学习的东西跟大家分享一下.
- 分享一下各大IT技术网站,也是我经常去学习的地方.
- 给大家分享一下学云网一学员学习C#的学习笔记