您的位置:首页 > 其它

一位博友关于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 控制记录分隔符
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐