标题:gawk编辑器
只看楼主
guixiaolan
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:356
专家分:0
注 册:2006-4-20
 问题点数:0 回复次数:1 
gawk编辑器
1.准备文件
-bash-3.2$ cat Linux
1       Fedora  Redhat  100
2       Ubuntu  Ubuntu  300
3       Redhat  Redhat  400
4       Unix    Unix    500
5       CentOS  Redhat  200

2.格式以及命令详解
-bash-3.2$ gawk '{print}' Linux
1       Fedora  Redhat  100
2       Ubuntu  Ubuntu  300
3       Redhat  Redhat  400
4       Unix    Unix    500
5       CentOS  Redhat  200
#print打印所有行,注意格式,以及TAB键

-bash-3.2$ gawk '/CentOS/' Linux
5       CentOS  Redhat  200
#打印含有CentOS字符串的行

-bash-3.2$ gawk '{print $2,"$"$4}' Linux
Fedora $100
Ubuntu $300
Redhat $400
Unix $500
CentOS $200
#打印每行的第2个字段+字符$+第4个字段

-bash-3.2$ gawk '/Redhat/{print $2}' Linux
Fedora
Redhat
CentOS
#打印含有Redhat字符串的行的第2个字段

-bash-3.2$ gawk '$2~/Ubuntu/' Linux
2       Ubuntu  Ubuntu  300
#打印第2个字段匹配Ubuntu字符串的行,正则表达式的应用

-bash-3.2$ gawk '$2!~/Ubuntu/' Linux
1       Fedora  Redhat  100
3       Redhat  Redhat  400
4       Unix    Unix    500
5       CentOS  Redhat  200
#打印第2个字段不为Ubuntu的行

-bash-3.2$ gawk '$2~/^[FC]/ {print $2}' Linux
Fedora
CentOS
#打印开头以F或C的行的第2个字段

-bash-3.2$ gawk '$4==400' Linux
3       Redhat  Redhat  400
#打印第4个字段等于400的行,操作符(==,>=等等)同C语言

-bash-3.2$ gawk '/Ubuntu/,/Redhat/' Linux
2       Ubuntu  Ubuntu  300
3       Redhat  Redhat  400
#打印含Ubuntu的行到含Redhat的行

-bash-3.2$ gawk '{print length,$0}' Linux
19 1    Fedora  Redhat  100
19 2    Ubuntu  Ubuntu  300
19 3    Redhat  Redhat  400
15 4    Unix    Unix    500
19 5    CentOS  Redhat  200
#内置函数length,表示每行字符个数,$0代表整行(内置函数自己查阅有关书籍即可)

-bash-3.2$ gawk 'NR==3,NR==5' Linux
3       Redhat  Redhat  400
4       Unix    Unix    500
5       CentOS  Redhat  200
#NR表示行号,打印行号为3的行到行号为5的行

-bash-3.2$ cat cmd
#! /bin/gawk -f
BEGIN{
 print"Number   Type    Co.     Price"
 print"------------------------------"
}
{print}
/Redhat/ {print>"Redhat"}
/Ubuntu/ {print>"Ubuntu"}
END{ print "Done!"}
-bash-3.2$ gawk -f cmd Linux
Number  Type    Co.     Price
------------------------------
1       Fedora  Redhat  100
2       Ubuntu  Ubuntu  300
3       Redhat  Redhat  400
4       Unix    Unix    500
5       CentOS  Redhat  200
Done!
-bash-3.2$ ls
cmd  Linux  Redhat  Ubuntu
-bash-3.2$ cat Redhat
1       Fedora  Redhat  100
3       Redhat  Redhat  400
5       CentOS  Redhat  200
#用命令文件来执行命令,在大量操作中可以方便使用,就像DOS中的批处理
#使用格式:gawk -f 命令文件 源文件
#第1行#! /bin/gawk -f表示执行该文件时使用gawk编辑器,以加快执行速度,否则通过sh来执行
#格式BEGIN{}+中间命令+END{},你可以通过执行效果来查看
#/Redhat/ {print>"Redhat"}表示将含有Redhat字符串的行写入到Redhat文件中,保存作用


-bash-3.2$ cat cmd2
#! /bin/gawk -f
BEGIN{
 print"Number   Type    Co.     Price"
 print"------------------------------"
}
{
if($2~/Fedora/)$2="Fedora9"
printf "%-3s %-8s  %-6s $%5.2f\n",$1,$2,$3,$4
}
END{ print "Done!"}
-bash-3.2$ gawk -f cmd2 Linux
Number  Type    Co.     Price
------------------------------
1   Fedora9   Redhat $100.00
2   Ubuntu    Ubuntu $300.00
3   Redhat    Redhat $400.00
4   Unix      Unix   $500.00
5   CentOS    Redhat $200.00
Done!
#格式输出以及表达式,都同C语言
搜索更多相关主题的帖子: gawk Redhat 编辑器 Linux Ubuntu 
2008-05-10 14:27
珍珍
Rank: 1
来 自:广东
等 级:新手上路
帖 子:49
专家分:0
注 册:2008-10-13
得分:0 
2008-10-23 20:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-213521-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.863802 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved