Chinaunix首页 | 论坛 | 博客
  • 博客访问: 221182
  • 博文数量: 71
  • 博客积分: 1649
  • 博客等级: 上尉
  • 技术积分: 725
  • 用 户 组: 普通用户
  • 注册时间: 2010-02-25 11:20
文章分类

全部博文(71)

文章存档

2012年(1)

2011年(11)

2010年(59)

我的朋友

分类: LINUX

2010-07-26 16:43:52

gawkGNU所做的Unix下的awk项目。gawk是一种流编辑器,他可以提供一种编程语言,而不仅仅是编辑的命令。用这些语言你可以:

1,  定义变量来存储数据;

2,  用带有算术或字符串的数据来操作;

3,  使用结构化的程序设计。像if-then、循环,来补充你数据处理的逻辑;

4,  通过提取数据文件的数据元素来生成格式化的报告;

gawk的命令格式

命令行选项提供了一个简单的方法定义(制)特征。我们可以直观的看到我们利用gawk的输出(explore

gawk的亮点是脚本,你可以写一个脚本读取文件按一行内的数据,然后处理、显示数据,产生任何形式的报告。

下边是gawk的一些可用选项

       -F fs       定义字段之间的分隔符

       -f file      指定从中读取程序的文件

       -v var=value   定义一个变量,当作gawk程序的默认值

       -mf N     每个字段的最大位数

       -mr N    定义处理数据的最大空间

       -W keyword gawk指定兼容模式或警告级别

定义数据字段变量

       $0    代表文本的一整行内容

       $1    代表数据的第一个字段

       $2  代表数据的第二个字段

       $n    代表数据的第n个字段

gawk默认的分隔符是任何的空白字符

[root@localhost test1]# cat test1

one line of test text.

 two lines of test text.

 three lines of test text.

       [root@localhost test1]# gawk '{print $1}' test1

       one

       two

       three

       [root@localhost test1]#

我们可以用-F指定分隔符

[root@localhost test1]# gawk -F: '{print $1}' /etc/passwd

root

bin

daemon

adm

lp

sync

shutdown

halt

mail

指定变量的默认值

[root@localhost test1]# echo "my name is rich"|gawk '{ print $0}'

my name is rich

[root@localhost test1]# echo "my name is rich"|gawk '{ $4="Dave"; print $0}'

my name is Dave

[root@localhost test1]#

或者

[root@localhost test1]# gawk '{

> $4="dave"

> print $0 }'

my name is rich .

my name is dave .

从文件中读取程序

[root@localhost test1]# cat  test2

{print $5 "'s userid is " $1}

[root@localhost test1]# gawk -F: -f test2 /etc/passwd

bin's userid is bin

daemon's userid is daemon

adm's userid is adm

lp's userid is lp

sync's userid is sync

shutdown's userid is shutdown

 

或者

[root@localhost test1]# cat  test3

{

text="'s userid is "

print $5 text $1

}

 

[root@localhost test1]# gawk -F: -f test3 /etc/passwd|more

yhf123's userid is root

bin's userid is bin

daemon's userid is daemon

adm's userid is adm

lp's userid is lp

sync's userid is sync

shutdown's userid is shutdown

halt's userid is halt

mail's userid is mail

news's userid is news

uucp's userid is uucp

beginend标记开始与结束

[root@localhost test1]# cat  test4

BEGIN {

print "The latest list of users and shells"

print "userid                   shell"

print "--------                 -------"

FS=":"

}

{

print $1 "                   " $7

}

END {

print "this concludes the listing "

}

[root@localhost test1]# gawk -f test4 /etc/passwd

The latest list of users and shells

userid                  shell

--------                 -------

root                   /bin/bash

bin                   /sbin/nologin

daemon                   /sbin/nologin

adm                   /sbin/nologin

lp                   /sbin/nologin

sync                   /bin/sync

shutdown                   /sbin/shutdown

halt                   /sbin/halt

mail                   /sbin/nologin

news                   

uucp                   /sbin/nologin

operator                   /sbin/nologin

阅读(758) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-08-30 16:07:07

d顶