AutoCAD 3DMAX C语言 Pro/E UG JAVA编程 PHP编程 Maya动画 Matlab应用 Android
Photoshop Word Excel flash VB编程 VC编程 Coreldraw SolidWorks A Designer Unity3D
 首页 > Linux

gawk编辑器

51自学网 http://www.wanshiok.com

原帖及讨论:http://bbs.bccn.net/thread-213521-1-1.html

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语言

 

 

 
上一篇:find命令简述  下一篇:JSP 环境搭置(for Linux)