注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

php 王建

php之路

 
 
 

日志

 
 

【转载】AWK使用介绍  

2012-07-04 12:40:33|  分类: linux |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
本文转载自wangjian84075041《AWK使用介绍》

目录


第一章:什么是awk?----------------------------------------------------------------------------------------------


1.1:什么是awk?----------------------------------------------------------------------------------------

1.2awk简介---------------------------------------------------------------------------------------------


1.3awk版本---------------------------------------------------------------------------------------------


1.4:awk的格式--------------------------------------------------------------------------------------------


1.5:awk的工作原理--------------------------------------------------------------------------------------


第二章:awk使用实例!


2.1:从文件输入-------------------------------------------------------------------------------------------

2.2:从命令输入-------------------------------------------------------------------------------------------


2.3:格式化输出-------------------------------------------------------------------------------------------


2.4printf函数--------------------------------------------------------------------------------------------


2.5:文件中awk的’命令--------------------------------------------------------------------------------


2.6:记录---------------------------------------------------------------------------------------------------


2.7:字段---------------------------------------------------------------------------------------------------


2.8:字段与分割符---------------------------------------------------------------------------------------


2.9:模式---------------------------------------------------------------------------------------------------


2.91:操作--------------------------------------------------------------------------------------------------


2.92:正则表达式-----------------------------------------------------------------------------------------


2.93:匹配操作符-----------------------------------------------------------------------------------------


2.94:脚本文件中的awk命令-------------------------------------------------------------------------



第三章:复习------------------------------------------------------------------------------------------------------


3.10:简单的模式与匹配--------------------------------------------------------------------------------


3.11:模式与操作组合的正则表达式-----------------------------------------------------------------


3.12:输入字段分割符-----------------------------------------------------------------------------------


3.13:编写awk脚本-------------------------------------------------------------------------------------


3.14:比较表达式-----------------------------------------------------------------------------------------

第四章:总结

4.1:小结---------------------------------------------------------------------------------------------------


第一章


1.1:什么是awk?



1.2awk简介




1.3awk版本





1.4:awk的格式




1.5:awk的工作原理





第二章



2.1:从文件输入


[root@localhost 桌面]# cat 1


[root@localhost 桌面]# awk '/le/' 1

marry lee 222

查询含有模式le的行

[root@localhost 桌面]# awk '{print $1}' 1


tom

marry

john


打印出文件1中的第一个字段,字段从行的左短开始,以空白符分割


[root@localhost 桌面]# awk '/marry/{print $1}' 1


marry


当文件1里面含有模式mary的时候,打印出头1个字段,字段的分割符是空白的符



2.2:从命令输入



[root@localhost 桌面]# df |awk '$4>7500000'




2.3:格式化输出



[root@localhost 桌面]# date |awk '{print "月份:" $2 "\n星期:" $4}'


月份:01

星期:星期六


date命令输出经过管道给awk,打印结果显示字符串月份和第一个字段01月和星期



[root@localhost 桌面]# awk '/tom/{print "have a nice day," $1,$2 "!"}' 1


have a nice day,tom sasnf!


如果某一行含有模式tom的话,就会打印出第一个和第二个字段


2.4printf函数








实例:

[root@localhost 桌面]# echo "unix 222" |awk '{printf "|%-12s|\n",$1}'

|unix |


[root@localhost 桌面]# echo "unix 222" |awk '{printf "|%12s|\n",$1}'


| unix|


说明:echo的输出通过管道发送给awkprintf函数包含一个控制串,百分好让printf做好准备,打印一个向作对齐的字符串,这个字符窜夹在两个|之间并且以换行符结尾,百分号后的短线表示以左对齐,后面加了一个逗号和,$1,printf将根据控制串里面的格式说明来格式化字符串unix 222


[root@localhost 桌面]# awk '{printf "name is:%-12s id is %-8d\n",$1,$3}' 1


name is:tom id is 100

name is:marry id is 222

name is:john id is 222


2.5:文件中awk的’命令


[root@localhost 桌面]# cat 2

/^tom/{print "hello tom!"}

{print $1,$2,$3}



[root@localhost 桌面]# cat 1

tom sasnf 100

marry lee 222

john doew 222

[root@localhost 桌面]# awk -f 2 1

hello tom!

tom sasnf 100

marry lee 222

john doew 222

[root@localhost 桌面]#


2.6:记录

[root@localhost 桌面]# cat 1

tom sasnf 100

marry lee 222

john doew 222



[root@localhost 桌面]# awk '{print $0}' 1

tom sasnf 100

marry lee 222

john doew 222

说明:

awk的变量$0保存当前记录的内容,它被打印到屏幕上!

[root@localhost 桌面]# cat 1

tom sasnf 100

marry lee 222

[root@localhost 桌面]# cat 1

tom sasnf 100

marry lee 222



[root@localhost 桌面]# awk '{print $0}' 1

tom sasnf 100

marry lee 222

john doew 222



[root@localhost 桌面]# awk '{print NR,$0}' 1

1 tom sasnf 100

2 marry lee 222

3 john doew 222



2.7:字段



[root@localhost 桌面]# awk '{print NR,$1,$2,$5}' 1

1 tom sasnf 2222

2 marry lee 4343

3 john doew 3333

4 sally sss 3333

打印出文件里面的每一条记录号,和第1 2 5号字段

[root@localhost 桌面]# awk '{print $0,NF}' 1





2.8:字段与分割符


一个新的值,在命令行改变FS的值需要加上-F选项,后面加上代表新的分割字符

[root@localhost 桌面]# cat 2

[root@localhost 桌面]# awk -F: '/tom/{print $1}' 2


[root@localhost 桌面]# awk -F'[ :\t]' '{print $1,$2}' 2



2.9:模式


[root@localhost 桌面]# cat 1


[root@localhost 桌面]# awk '$3<=100' 1

查看1文件里面第三个字段小于等于100的记录


2.91:操作



2.92:正则表达式





2.93:匹配操作符

[root@localhost 桌面]# cat 1


[root@localhost 桌面]# awk '$1 ~ /[m]a/' 1

显示所有的第一个字段里面含有ma的行


[root@localhost 桌面]# awk '$1 !~ /y$/' 1



显示所有的第一个字段的结尾不是以y为结尾的行


2.94:脚本文件中的awk命令


先查看下脚本里面的awk命令是如何写的


[root@localhost 桌面]# cat info


[root@localhost 桌面]# cat 2


[root@localhost 桌面]# awk -F: -f info 2

如果在输入文本行里面查到有含有tom的行,就打印出tom的生日


如果在输入文本行中匹配到mary的行,则打印出当前的记录编号个内、容


第三章


3.10:简单的模式与匹配



[root@localhost 桌面]# cat datafile


[root@localhost 桌面]# awk '/west/' datafile

打印含有模式west的行

[root@localhost 桌面]# awk '/^north/' datafile

打印所有以north开头的行。

[root@localhost 桌面]# awk '/^(no|so)/' datafile

打印所有以no或者是so开头的行


简单的操作

[root@localhost 桌面]# awk '{print $1 $2}' datafile


[root@localhost 桌面]# awk '{print $1,$2}' datafile


如果$1$2之间没有加上逗号的话,打印出的结果里面是没有空格的!

[root@localhost 桌面]# awk '{print $0}' datafile


打印所有的记录,$0保存的是当前的记录。

[root@localhost 桌面]# awk '{print "number:"NF}' datafile



说明:

每一个记录都有8个字段,awk的内置变量是用来保存记录的字段数,在处理每一条记录的时候都会被重置!


3.11:模式与操作组合的正则表达式


[root@localhost 桌面]# awk '/nor/{print $1,$2}' datafile


如果记录包含模式nor打印它的前两个字段

[root@localhost 桌面]# awk '/^[ns]/{print $1}' datafile

如果记录以n或者是s 开头的就打印出前一个字段

[root@localhost 桌面]# awk '$5 ~ /\.[4-5]+/' datafile



如果记录的第五个字段是在.后面4或者5的打印出来


[root@localhost 桌面]# awk '$2 !~ /E/{print $1,$2}' datafile


如果某条记录的第二个字段不包含模式E,就打印出第二个和第一个字段

[root@localhost 桌面]# awk '$3 ~ /^wa/{print $3 "你还好把?"}' datafile


如果某一行的第三个字段是以wa开头的打印一句话。


[root@localhost 桌面]# awk '$8 ~ /[3-6]$/{print $8}' datafile


如果第八个字段是以3-6之间的数结尾的,打印出第八个字段


3.12:输入字段分割符


[root@localhost 桌面]# cat datafile2

[root@localhost 桌面]# awk '{print $1}' datafile2

默认的输入字段分割符是空白字符

[root@localhost 桌面]# awk -F: '{print $1}' datafile2


-F选项指定以冒号作为输入字段的分割符,


[root@localhost 桌面]# awk -F"[ :]" '{print $1,$2,$3}' datafile2


  评论这张
 
阅读(55)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018