awk是格式化报文或从一个大的文本文件中抽取数据包
(1)命令行方式:
awk [-F field-separator] ‘commands' input-file(s)
awk -F: 'commands' input-file
(2)将awk命令插入一个文件,并使awk程序可执行,然后用awk命令解释作为
作为脚本的首行,以便通过键入脚本名称来调用它。
(3)将所有的awk命令插入一个单独文件 然后调用
awk -f awk-script-file input-files(s)
awk-script-file 中的awk脚本,input-files是使用awk进行浏览的文件名
awk命令由模式和动作组成。模式部分决定了动作何时触发以及触发事件。处理即是对数据的操作,如果省略模式部分,动作将时刻保持执行状态。
模式可以是任何语句或复合语句或正则表达式。包括两个特殊字段 BEGIN和END。
用BEGIN语句来设置计数和打印头。BEGIN语句使用在任何文本浏览动作以前,之后文本浏览动作依据输入文件开始执行。
END语句用来在awk完成文本浏览动作后打印输出文本总数和结尾状态标识。
如果不特别指定模式,awk将匹配或打印行数。
==========
awk 执行时候,其浏览的标志为$1,$2,$3..$n.用$0标识所有的域。
打印所有域
awk '{print $0}' grade.txt>now
awk '{print $0}' grade.txt|tee now
使用标准输入:
belts.awk grade.txt
belts.awk
grade.txt|belts.awk
打印所有记录:
awk '{print $0}' grade.txt
awk '{print $1,$3}'
打印消息头:
awk 'BEGIN {print "Name Belt\n=================================="} {print $1 "\t" $4}' grade.txt
打印消息尾:
awk 'BEGIN {print "Name \n================"}{print $1}END {"End of report"}' grade.txt
awk '{if ($4~/brown/)print}'意味filed4包含brown
awk '$3=="46" {print $3}' grade.txt
awk '$0 !~/Brown/'grade.txt
awk '{if($4!~/Brown/)print $0}'
awk '$4 !="Brown-2" {print $0}' grade.txt
awk '{if ($6<=$7) print $1}' grade.txt
awk '/[Gg]reen/' grade.txt
awk '$1~/^...a' grade.txt
awk '$0~/(Green|green)' grade.txt
awk '/^48/' inputfile
============================================================
awk 'END {print NR}' grade.txt NR 是记录数目
awk '{print NF,NR,$0} END {print FILENAME}' grade.txt
NF一共有多少个域,NR是记录行数,FILENAME浏览的文件名
echo "/usr/local/etc/tst.sysbase"|awk -F/ '{print $NF}'
echo $PWD |awk -F / '{print $NF }'
awk '{if ($1=="JOME") {$1='Miao';print $1}}' grade.txt
awk '(tot+=$6);END{print "Club student total points:" tot}' grade.txt
awk '{(tot+=$6)};END{print "total points :"tot}' grade.txt
ls -l|awk '/^[^d]/ {print $9"\t"$5}{tot+=$5}END {print"total KB" tot}'
全局替换,789替换456
awk 'gsub(/456/,789) {print $0}' grade.txt
查询字符串出现的第一位置。
awk 'BEGIN {print index("Buunny","ny")}'grade.txt
awk '$1 =="JIMS" {print length($1) " " $1}' grade.txt
awk '$1=="JIMS" {print match("AVCD", /C/)}'
awk 'BEGIN {print split("123#345#678",myarray,"#")}'
myarray[1]="123"
myarray[2]="456"
myarray[3]="678"
awk '$1=="JIMSTOM" {print substr($1,1,5)}' grade.txt
awk {printf "%-15s %s\n" ,$1,$3}'grade.txt
awk '{if ($5df -k|awk '($4 ~/^[0-9]/) {if ($4==========================================================================
简单脚本
!/bin/awk -f
BEGIN{
print "Name ================================================"
}
(tot+=$6)
END {print "Club student total points:" tot/NR}
==========================================================================
awk 'BEGIN {print "Name\n========="}{print $1}END{"end-of-report"}' fileName.txt
向awk传值
awk script_file var=value input_file
==========================================================================
简单脚本
#!/bin/awk -f
BEGIN{
record="123#345#456";
split(record,myarry,"#")}
END{for (i in myarry) {print myarray[i]}}
阅读(926) | 评论(0) | 转发(0) |