欢迎来到天天文库
浏览记录
ID:37516793
大小:58.00 KB
页数:6页
时间:2019-05-24
《shell命令介绍》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、在shell命令或编程中,可以用AWK强大的的文本处理能力。如果要格式化报文或从一个大的文本文件中抽取数据包,那么awk可完成这些任务。awk是一种解释的编程语言。awk也是shell过滤工具中最难掌握的。awk是一种自解释的编程语言。结合awk和sed和grep,将会使awk编程更加容易。awk语言最基本的功能是在文件或字符串中基于指定的规则浏览和抽取信息。有三种方式可调用awk.<1>.命令行方式。<2>.将所有的awk命令插入一个文件,并利用chmod使awk文件成为执行。<3>.将所有的awk命令插入一个单独文件,然后调用
2、。以下简单介绍awk的各种方式,详细请查看相关另外文档在awk中有四种概念。1.抽取域2.匹配正则表达式3.比较域4.向awk传递参数以下简单介绍:1).保存awk输出:#awk'{print$0}' myfile>newfile2).使用tee,在输出到文件的同时输出到屏幕(利用管道'
3、') #awk'{print$0}'myfile
4、teenewfile3).打印报告头,#awk'BEGIN{print"hello,thisisTitle---------"}{print$0}'newfile4).打印信息尾.#aw
5、k'BEGIN{print$0}END{"endoffile."}'myfile5).匹配,如下若在myfile第二列中带有BROWN,则打印信息 #awk'{if($2~/BROWN/)print$0}'myfile6).精确匹配,同上,只是将~改为==7).不匹配,有时要浏览信息并抽取不匹配操作的记录,与~相反的符号是!,如下#awk'$0!~/BROWN/'myfile8).比较 如小于:#awk'if($1<$2)print$1'myfile9).设置大小写#awk'[Gg]reen/'myfile10).任意字符,
6、表达式/^...a/意为前三个字符是任意字符 #awk'$1~/^...a/'myfile11).或关系匹配,#awk'$0~/(YELLOW
7、
8、RED)/'myfile12).与:&&,或:
9、
10、13).awk内置变量 <1>.要快速查看记录个数,应使用NR,如:#awk'END{printNR}'myfile<2>.以下使用NF变量显示每一条读记录中有多少个域,并在END部份 打印输入文件名。#awk'{printNR,NF,$0}END{printFILENAME}'myfile<3>.判断并输出.#awk'{if(NR>0&
11、&$4~/BROWN/)print$0'myfile14).可以设置输入域到域变量名。15).域值比较操作。 @1.在BEGIN中给变量名赋值。通常在BEGIN部分赋值是很有益的,可以在awk表达式进行改动时减少很大麻烦. @2.在关系操作中使用实际数值,使用关系操作时必须用括号括起来. #awk'{if($6<27)print$0}'myfile #awk'BEGIN{BASELINE="27"}{if($612、的文件可修改,改动的是cache中的awk复本,awk会在变量NR或NF中反映出修改的痕迹。#awk'{if($1=="M.TANS")$6=$6-1;print$6}'myfile18).修改文本域 #awk'{if($1=="J.Troll")($1="J.L.Troll");print$1}'myfile19).只显示修改记录#awk'{if($1=="J.Troll"){$1="J.L.Troll";print$1}}'myfile20).创建新的输出域在awk中处理数据时,基于各域进行计算的创建新域是个好的习惯。如下示例13、: #awk'BEGIN{print"Name Scoret"}if($6<$7){$8=$7-$6;print$8}'myfile21).增加列值 #awk'tot+=$6;END{print"ClubTotalpoint."tot}'myfile22).使用模式打印文件名及其长度,放入变量tot中#ls-l14、awk'/^[^d]{print$9"t"$5}{tot+=$5}END{print"TotalKB:tot"}'23).awk内置的字符串函数24).awk脚本文件如以上的所述的诸多情况,这里只不过命令放在一个文15、件中,且该文件必须是!/bin/awk-f,因为这样才会使这个文件可以自解释。否则将不能作用。为了容易分别,最好将文件带一个扩展名.awk,完成对文件的编写后,再利用chmod u+x使文件可以执行。 以上只是我在实验中的一些情况,awk命令功能
12、的文件可修改,改动的是cache中的awk复本,awk会在变量NR或NF中反映出修改的痕迹。#awk'{if($1=="M.TANS")$6=$6-1;print$6}'myfile18).修改文本域 #awk'{if($1=="J.Troll")($1="J.L.Troll");print$1}'myfile19).只显示修改记录#awk'{if($1=="J.Troll"){$1="J.L.Troll";print$1}}'myfile20).创建新的输出域在awk中处理数据时,基于各域进行计算的创建新域是个好的习惯。如下示例
13、: #awk'BEGIN{print"Name Scoret"}if($6<$7){$8=$7-$6;print$8}'myfile21).增加列值 #awk'tot+=$6;END{print"ClubTotalpoint."tot}'myfile22).使用模式打印文件名及其长度,放入变量tot中#ls-l
14、awk'/^[^d]{print$9"t"$5}{tot+=$5}END{print"TotalKB:tot"}'23).awk内置的字符串函数24).awk脚本文件如以上的所述的诸多情况,这里只不过命令放在一个文
15、件中,且该文件必须是!/bin/awk-f,因为这样才会使这个文件可以自解释。否则将不能作用。为了容易分别,最好将文件带一个扩展名.awk,完成对文件的编写后,再利用chmod u+x使文件可以执行。 以上只是我在实验中的一些情况,awk命令功能
此文档下载收益归作者所有