您的位置:首页 > 其它

awk简单教程

2008-05-25 20:04 267 查看
语法结构为 ' 表达式{动作}' 

默认为每行一个循环 一直循环到结束

$0 为一字符串,其内容为目前AWK所读入的记录 

$1 代表$0上第一个域的数据 

$2 代表$0上第二个域的数据

AWK也可以接受一般的关系判断如 代码::

>,<,>=,<=,==,!=

另外它还接受~(符合)及!~(不符合)两个关系运算符,比如 代码::

"Xplore" ~/or/

NF(Number of Fields)为一整数,表示域的数目,比如test1.dat上域数目就是4个 

NR(Number of Records)为一整数,其值表示AWK意读入的记录条数 

FILENAME 正在处理的数据文件名

FS=":" 分割符号

$awk '{if (NF>max) max=NF} END{print max} ' test1.dat

$ awk 'NF>0' test1.dat

$ awk 'NR %2 ==0' test1.dat

$ awk '{print $2}' test1.dat

$ ls -l |awk '{x+=$5}; END{print x}'

$ awk 'BEGIN{FS=":";} {print $1 |"sort" }' /etc/passwd

$ awk 'END{print "total",NR,"lines"}' test1.dat

$ awk '/one/{print $0}' test1.dat

$ awk -F":" '{ print $1 " " $3 }' /etc/passwd

$ awk -F":" '{ print "username: " $1 "\t\tuid:" $3" }' /etc/passwd

$ awk -f myscript.awk myfile.in

/[0-9]+\.[0-9]*/ { print }

$1 == "fred" { print $3 }

$5 ~ /root/ { print $3 }

! /matchme/ { print $1 $3 $4 }

( $1 == "foo" ) && ( $2 == "bar" ) { print } 

/^$/ 空白行

FS="\t+"

FS="[[:space:]+]"

FS="foo[0-9][0-9][0-9]"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: