[Linux]AWK入门

运行AWK程序

  • awk '脚本内容' - 也可以把这些写到sh脚本文件中
  • awk -f 脚本文件名
  • 在脚本文件中第一行写入"#!/bin/awk -f",然后在shell中执行脚本文件

PATTERN

AWK程序的组织形式如下。

pattern { action }

AWK程序顺次读取输入的每一行,然后判定改行是否符合pattern,如果pattern为true,则对应的action执行。

有如下pattern:

[空] - 这个对应的action永远执行

BEGIN - 所有输入之前执行

END - 所有输入之后执行

print

action中最常用的是print,用法:

print list_of_打印项(seq=,)

支持转义字符。

支持变量,例如$3代表打印输入文本的第3列。

和sh不同,变量不能写在引号内。

变量

输入文本列

$i代表第i列,其中i可以是立即数,也可以是变量

使用sh中的变量

直接在sh中赋值,然后在awk中使用这个变量——是不行的,下边做个对比说明

对比1 - 这个可以打印第二列

执行 awk 'BEGIN{x=2}{print $x}',相当于执行awk文件:

BEGIN { x=2}{print $x}

对比2 - 这个不可以打印第二列

执行 x=2 后,再执行 awk '{print $x}'

x变量并不被awk识别

对比2改进

执行 x=2 后,再执行 awk '{print $'$x'}',可以这么理解:

bash首先执行红色部分 awk '{print $'$x'}',结果为 awk '{print $2}'

 

posted @ 2012-10-08 21:10  斯啦丝拉  阅读(835)  评论(0编辑  收藏  举报