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                控制记录分隔符