Accesslog分析常用命令 awk
上一篇 / 下一篇 2009-05-23 09:34:25 / 个人分类:liunx相关
awk 命令
GQ's)l EM.F051Testing软件测试网]A;NsN&O(J5q
用途
在文件中查找与模式匹配的行,然后在它们上面执行特定的操作。51Testing软件测试网KDRi#b6|5?oPt
语法
51Testing软件测试网 Q)[q*v JQ"b D7Hawk[ -FEre] [ -vAssignment] ... { -fProgramFile|Program'} [ [ File ... | Assignment ... ] ] ...51Testing软件测试网D.K wOPM k7V[
描述
awk命令利用一组用户提供的指令来将一组文件和用户提供的扩展正则表达式比较,一次一行。然后在任何与扩展正则表达式匹配的行上执行操作。awk处理的最大记录大小为 10KB。
%HH&DmTG`|-G:w4K0awk命令的模式搜索比grep命令的搜索更常用,且它允许用户在输入文本行上执行多个操作。awk命令编程语言不需要编译,并允许用户使用变量、数字函数、字符串函数和逻辑运算符。51Testing软件测试网0B\o:AZ&gk0}
awk命令受到LANG、LC_ALL、LC_COLLATE、LC_CTYPE、LC_MESSAGES、LC_NUMERIC、NLSPATH和PATH环境变量的影响。
,H,Y ~7lY8f0本章中包括以下主题:51Testing软件测试网/U,`tbx5I
awk 命令的输入
awk命令采取两种类型的输入:输入文本文件和程序指令。
,IR,?z B#Xu0输入文本文件
搜索和操作在输入文本文件上执行。文件如下指定:
'a2k aib;@_y0- 在命令行指定File变量。
- 修改特殊变量ARGV和ARGC。
- 在未提供File变量的情况下提供标准输入。
如果用File变量指定多个文件,则文件以指定的顺序处理。51Testing软件测试网opt LH`!}w}
程序指令
用户提供的指令控制awk命令的操作。这些指令来自命令行的‘Program’变量或来自用-f标志和ProgramFile变量一起指定的文件。如果指定多个程序文件,这些文件以指定的顺序串联,且使用指令的生成的顺序。51Testing软件测试网K ktPOWZ
awk 命令的输出
awk命令从输入文本文件中的数据产生三种类型的输出:
.OIo]I"o5\b-a0- 选定的数据可以打印至标准输出,此输出完全同于输入文件。
- 输入文件的选定部分可以更改。
- 选定数据可以更改并可打印至标准输出,此输出可以同于或不同于输入文件的内容。
可以在同一个文件上执行所有三种类型的输出。awk命令识别的编程语言允许用户重定向输出。
l`0t d#RQy7hZ`0通过记录和字段的文件处理
文件以下列方式处理:51Testing软件测试网Wb3j#o9B
- awk命令扫描它的指令,并执行任何指定为在读取输入文件前发生的操作。
awk编程语言中的BEGIN语句允许用户指定在读取第一个记录前要执行的一组指令。这对于初始化特殊变量特别有用。51Testing软件测试网aR^,uS%FB@/qf
- 从输入文件读取一个记录。
记录是由记录分隔符隔开的一组数据。记录分隔符的缺省值是换行字符,它使文件中的每一行成为一个单独的记录。记录分隔符可以通过设置RS特殊变量来更改。51Testing软件测试网xz Jg]
- 记录是相对于awk命令的指令指定的每种模式比较。
命令指令可以指定应比较记录内的特定字段。缺省情况下,字段由空白区(空格或跳格)隔开。每个字段由一个字段变量表示。记录中的第一个字段指定为$1变量,第二个字段指定为$2变量,以此类推。整个记录指定为$0变量。字段分隔符可以通过在命令行使用-F标志或通过设置FS特殊变量来更改。FS特殊变量可以设置为下列值:空格、单个字符或扩展正则表达式。
q/C8cy7i*?%`0 - 如果一个记录与一个模式相匹配,则任何与该模式相关的操作都在该记录上执行。
- 在记录和每个模式比较且执行了所有指定操作以后,从输入读取下一个记录;在从输入文件读取所有的记录之前,该进程重复。
- 如果已经指定了多个输入文件,则下一个文件打开,且在读取所有的输入文件之前,该进程重复。
- 在读取了最后一个文件中的最后一个记录后,awk命令执行任何指定为在输入处理后发生的指令。
awk编程语言中的END语句允许用户指定在读取最后一个记录后要执行的操作。这对于发送有关awk命令完成了什么工作的消息特别有用。51Testing软件测试网AZ [zzZbx
awk 命令编程语言
awk命令编程语言由以下格式的语句构成:
!Rq-E,Uzu0Pattern{Action}51Testing软件测试网C5WeSn
如果一个记录与指定模式相匹配,或包含与该模式匹配的字段,则执行相关的操作。可以指定没有操作的模式,这种情况下,包含该模式的整行写至标准输出。为每个输入记录执行指定的没有模式的操作。51Testing软件测试网*wn#LPQY!k&l
模式
在awk命令语言语法中使用四种类型的模式:51Testing软件测试网NY#G Z(jM0O
正则表达式
awk命令使用的扩展正则表达式类似于grep或egrep命令使用的表达式。扩展正则表达式的最简单的形式就是包括在斜杠中的一串字符。例如,假定一个名为testfile的文件具有以下内容:
ly lIz~&MSY+zE051Testing软件测试网Y*S7mA{yB*P51Testing软件测试网8s.ayypk_r'{6Z
smawley, andy smiley, allen smith, alan smithern, harry smithhern, anne smitters, alexis
输入以下一行命令:51Testing软件测试网4M;[4mo2J"[
6oa9i8ivBe.L:e051Testing软件测试网{:n^!kq&Q^4}U~g
awk '/smi/' testfile
将把包含smi字符串的具体值的所有记录打印至标准输出。在这个示例中,awk命令的程序'/smi/'是一个没有操作的模式。输出是:
6r5A1]A/^!l7m:x0?'f4].S&x8K)vV051Testing软件测试网Ym^\4}C5?\!ZO
smiley, allen smith, alan smithern, harry smithhern, anne smitters, alexis
以下特殊字符用于形成扩展正则表达式:51Testing软件测试网Y(}4Q9t_q BCk