Chinaunix首页 | 论坛 | 博客
  • 博客访问: 590721
  • 博文数量: 226
  • 博客积分: 10080
  • 博客等级: 上将
  • 技术积分: 1725
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-26 11:15
文章分类

全部博文(226)

文章存档

2011年(5)

2010年(64)

2009年(99)

2008年(37)

2007年(21)

我的朋友

分类: LINUX

2007-11-26 18:53:30

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) |
0

上一篇:VI编辑器使用

下一篇:grep 命令使用

给主人留下些什么吧!~~