awk

简单来说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

原文地址:https://www.cnblogs.com/bluewelkin/p/3986234.html