AWK是一种处理文本文件的语言,是一个强大的文本分析工具。之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字符。

语法:



awk [选项参数] 'script' var=value file(s)

awk [选项参数] -f scriptfile var=value file(s)



基本用法:

用法一:

新建一个log.txt 文件



2 this is a test
3 Are you like awk
This's a test
10 There are orange,apple,mongo



命令(格式):



awk '{[pattern] action}' {filenames}   # 行匹配语句 awk '' 只能用单引号



(1)每行按空格或TAB分割,输出文本中的1、4项



$ awk '{print $1,$4}' log.txt
---------------------------------------------
2 a
3 like
This's
10 orange,apple,mongo



(2) 格式化输出



$ awk '{printf "%-8s %-10s\n",$1,$4}' log.txt
---------------------------------------------
2 a
3 like
This's
10 orange,apple,mongo



 用法二:



awk -F  #-F相当于内置变量FS, 指定分割字符



使用","分割



$  awk -F, '{print $1,$2}'   log.txt
---------------------------------------------
2 this is a test
3 Are you like awk
This's a test
10 There are orange apple



使用多个分隔符.先使用空格分割,然后对分割结果再使用","分割



$ awk -F '[ ,]'  '{print $1,$2,$5}'   log.txt
---------------------------------------------
2 this test
3 Are awk
This's a
10 There apple



 用法三:

awk -v  # 设置变量



$ awk -va=1 '{print $1,$1+a}' log.txt
---------------------------------------------
2 3
3 4
This's 1
10 11
$ awk -va=1 -vb=s '{print $1,$1+a,$1b}' log.txt
---------------------------------------------
2 3 2s
3 4 3s
This's 1 This'ss
10 11 10s



 用法四:

awk -f {awk脚本} {文件名}