文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>gawk学习笔记

gawk学习笔记

时间:2009-05-23  来源:sjhf

gawk语法:

a、gawk [模式] [{动作}] 文件                #模式和动作直接在命令行给出

b、gawk –f gawk程序 文件                           #模式和动作放在gawk程序中调用

注:gawk基本用法是找到文件中与模式相匹配的行,对其采取相应的动作。a为简单用法,b用于处理复杂一些的gawk功能。

模式和动作均为可选项。

若不指定模式,文件中的每一行都将被匹配;若不指定动作,gawk将对所有匹配行进行默认print操作,即输出到标准输出(屏幕)。后面的例子均以文件cars做为参数,文件中所有空白字符都由单个TAB组成(不包含任何空格)。

$ cat cars

plym fury 1970 73 2500 chevy malibu 1999 60 3000 ford mustang 1965 45 10000 volvo s80 1998 102 9850 ford thundbd 2003 15 10500 chevy malibu 2000 50 3500 bmw 325i 1985 115 450 honda accord 2001 30 6000 ford taurus 2004 10 17000 toyota rav4 2002 180 750 chevy impala 1985 85 1550 ford explor 2003 25 9500

缺省模式:一个最简单的gawk命令如下:

$ gawk ‘{print}’cars

plym   fury         1970          73     2500
chevy  malibu       1999          60     3000
ford   mustang      1965          45     10000
volvo  s80          1998          102   9850

…….

上面的命令不指定模式,它匹配所有行并将他们输出到屏幕。

$ gawk ‘/chevy/’cars

chevy  malibu       1999          60     3000
chevy  malibu       2000          50     3500
chevy  impala       1985          85     1550 上面的命令将匹配chevy的所有行缺省print到屏幕。

$ gawk ‘/chevy/ {print $3, $1}’ cars

1999    chevy
2000    chevy
1985    chevy
上面的程序先匹配chevy,再对匹配的行执行动作:输出第三字段($3)和第一字段($1),$3和$1之间是空格。
  
   模式:可以使用关系操作符(>、=、<及其组合)执行数值比较和字符串比较,也可以用斜杠把正则表达式包装起来(如上例中/chevy/),他们都是模式。可以使用布尔操作符||(OR)或者&&(AND)来组合任何模式。
   动作:gawk中的动作最常用的就是print和printf,print是默认的动作。动作必须位于{}内,以区分模式和动作,动作的结果可以通过重定向或管道进行传递。
   变量:常用的,$0表示整行记录,$n表示当前行中的第n个字段。
   printf用法:
   printf “输出方式”, 参数1, 参数2, ……, 参数n    #参数1~n常为$1~$n,顺序可自定义 输出方式中使用\n表示换行符,\t表示TAB,输出方式包含了转换规格,转换规格语法为:    %[-][x[.y]]conv 其中-使得printf将参数左对齐,x表示最小字段宽度,.y表示小数点后面的位数,conv指示数值转换的类型:                    Conv                     转换类型                    s                        字符串                    d                        十进制                    f                        符点数 $ cat showf {printf  “%-10s %-8s  %2d  %5d $  %8.2f\n”, $1, $2, $3, $4, $5} $ gawk –f  showf cars
plym fury 1970 73 $ 2500chevy malibu 1999 60 $ 3000ford mustang 1965 45 $ 10000volvo s80 1998 102 $ 9850ford thundbd 2003 15 $ 10500chevy malibu 2000 50 $ 3500bmw 325i 1985 115 $ 450honda accord 2001 30 $ 6000ford taurus 2004 10 $ 17000toyota rav4 2002 180 $ 750chevy impala 1985 85 $ 1550ford explor 2003 25 $ 9500
printf对与以整齐的格式处理报告很有用。    if、while、for等控制流结构均可以用于gawk中,读者可以自行验证,这里不再举例(前面的例子作者均实际验证通过)。gawk还可以使用协进程进行网络数据交换等更高级的功能,本文不涉及这部分内容。    本人也经常在各linux论坛搜索学习资料,感觉网上的资料很多同时也比较杂,不够系统。系统学习linux管理及编程的书籍还是需要的,再此推荐一下我正在读的《Linux命令、编辑器与Shell编程》

http://licong.blog.51cto.com/542131/151976

  最近系统学习了一下linux下shell编程,关于bash脚本的内容太多,以后再慢慢整理。先将gawk的学习做一下笔记,方便以后查阅。本文中的原理及例子均出自Mark G.Sobell所著《Linux命令、编辑器与Shell编程》(杨明军、王凤芹译)

gawk(GNU awk)工具是一种模式扫描和处理语言,它搜索一个或多个文件,以查看这些文件中是否存在匹配指定模式的记录(通常是文本)。每次发现时,它通过执行动作的方式处理文本。使用gawk可以生成报告或者过滤文本,gawk的很多结构来自C语言。

Gawk工具是UNIX awk的GNU版。为了方便起见,很多linux系统将/bin/awk链接到/bin/gawk,这样用户可以使用两者中的任何一个来运行程序。

排行榜 更多 +
新知幻

新知幻

系统软件 下载
usb串口调试

usb串口调试

系统软件 下载
乒乓对决

乒乓对决

体育竞技 下载