awk

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
   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 ($5<AGE) print $0}' AGE=10 grade.txt
df -k|awk '($4 ~/^[0-9]/) {if ($4<TRIGGER) print $6 "/t"$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]}}
 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值