简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处
1.命令行方式
awk [-F field-separator] 'commands' input-file(s)
其中,commands 是真正awk命令,[-F域分隔符]是可选的。 input-file(s) 是待处理的文件。
在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,在不指名-F域分隔符的情况下,默认的域分隔符是空格。
例如:cat /etc/passwd | awk -F ':' '{print $1}'
或者awk '{print $1}' scores.sh
cat scores.sh | awk '{print $1}'
2.shell脚本方式
将所有的awk命令插入一个文件,并使awk程序可执行,然后awk命令解释器作为脚本的首行,一遍通过键入脚本名称来调用。
相当于shell脚本首行的:#!/bin/sh
可以换成:#!/bin/awk
其中 awk1.sh里面的内容
#!/bin/awk -f
{ print }
然后./awk1.sh scores.sh
注意: #!/bin/awk -f 一定要有-f
否则会出现这种错误
awk: ./awk1.sh
awk: ^ syntax error
3.将所有的awk命令插入一个单独文件,然后调用:
awk -f awk-script-file input-file(s)
其中,-f选项加载awk-script-file中的awk脚本,input-file(s)跟上面的是一样的。
例如:awk -f awk1.sh scores.sh
其中awk1.sh里面是
#!/bin/awk 【注意,方式二和方式三 就是这里差一个-f的区别。方式三有f没有f都可以。但方式二文件内容没有-f的话会出错】
{ print }
其中scores.sh里面是
kis 68 58 60 86
as 85 90 90 97
asd 56 68 65 75
dgx 90 98 96 99
tom 88 89 90 78
参考文献:http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858470.html