首页 | 资讯动态 | linux基础 | 系统管理 | 网络管理 | 编程开发 | linux数据库 | 服务器技术 | linux相关 | linux认证 | 嵌入式 | 下载中心 | 专题 | linux招聘 | 镜像站
OKLinux中文技术站
·设为首页
·加入收藏
·联系我们
系统管理: 中文环境 系统管理 桌面应用 内核技术 | Linux基础: 基础入门 安装配置 常用命令 经验技巧 软件应用 | Linux数据库: Mysql Postgre Oracle DB2 Sybase other
网络管理: 网络安全 网络应用 Linux服务器 环境配置 黑客安全 | 编程开发: PHP CC++ Python Perl Shell 嵌入式开发 java jsp | PHP技术: PHP基础 PHP技巧 PHP应用 PHP文摘
Linux资讯 Linux招聘 Linux专题 Apache | Linux相关: 硬件相关 Linux解决方案 Linux认证 企业应用 其它Unix | 相关下载: 资料下载 参考手册 开发工具 服务器类 软路由 其它
 技术搜索:
会员中心 注册会员 高级搜索  
  → 当前位置:首页>编程开发>其他编程>正文

Linux 下的编程语言awk 学习

http://www.oklinux.cn  2008-04-26  来源: linuxidc   会员收藏  游客收藏  【 】 

awk 是Linux系统下的一个非常有用的用于处理文件和字符串的工具,他也提供内置函数,所以他也算是一门编程语言了。起类似作用的工具还有sed,grep等。这几天我会一直学习awk。

这里我只讲awk的命令,不会涉及awk的脚本,其实两者道理是一样的。

(1) awk 处理文件:
命令方式 awk -f 域分隔符 '模式 {动作}' 文件名

每次读取文件的一行,通过域分隔符将每行分隔成若干个域 ,分别用$1,$2, $3,...$9,&(10)...表示第一个域,第二个域。。。。, $0表示一行的所有域,默认是用空格作为域分隔符,这也是一般的方法,所以-f 域分隔符一般都不用。

awk与sed,grep一样,是将文件内容读取到缓存区中,对其进行操作,再将结果输出到屏幕上,不会对源文件进行修改,如果要修改源文件,使用如下形式

awk comand filename | tee filename

模式由一些选择语句(里面含有正则表达式进行特定行的匹配)组成,他表示什么时候激发动作的产生;模式有2个特殊的字段,BEGIN与END。BEGIN 表示报头,在浏览行之前执行,END表示报尾,在所有的浏览后执行。默认的模式是打印所有行。

动作一般是{print $1....} ,就是将每一行的某些域打印出来。

下面举一些例子讲述:
$ cat file
1 nm hello 2000
2 jack good 2001
3 eric happy 2002

$ awk '{print &0}' file
结果:
1 nm hello 2000
2 jack good 2001
3 eric happy 2002

$ awk '{print $1,$3,$4}' file
结果:
1 hello 2000
2 good 2001
3 happy 2002
$ awk 'BEGIN {print "begin test"}{print &0}END{print "end test"}' file
结果:
begin test
1 nm hello 2000
2 jack good 2001
3 eric happy 2002
end test
$ awk '{if($2=="nm") {print $0}}' file
$ awk '$2=="nm" {print $0}' file # 这两条命令结果一样,建议用第二条语句
1 nm hello 2000
$ awk '$3 ~ /o/ {print $0}' file
结果:
1 nm hello 2000
2 jack good 2001
$awk '$3 ~ /^h/ ' file
结果:
1 nm hello 2000
3 eric happy 2002


上一篇:编译Linux内核的(Ubuntu7.10)   下一篇:Linux环境下MySQL数据库大小写区分问题

收藏于收藏夹】 【评论】 【推荐】 【打印】 【关闭
相关文档
·编译Linux内核的(Ubuntu7.10)
·Linux 平台下的GCC的编译及使用
·Linux环境下创建静态库和动态库
·Linux fedore core 4内核编译过程讲解
·Linux系统中运行命令时CTRL Z的作用
·C-Kermit安装和使用及下载内核方法
·Linux环境下识别编码新命令(enca)很好很强大
·Linux操作系统中改变shell的颜色
·Debian Linux下编译内核标准方式简述
·Ubuntu环境安装Qt4和使用Qt4初体验
·在虚拟机的Lnux系统下编译C程序
·新手学习 Linux系统中添加自己的库文件路径
·编写能同时运行在Windows与Linux系统下的JAVA程序
·Linux操作系统中修改语言设置Shell命令
·Linux系统下用Frame Buffer来做摄像头编程
·CentOS 5.1下编译与安装Linux内核2.6.24
发表评论
密码: 匿名评论
评论内容:

(不超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)
 
  最新文档
·编译Linux内核的(Ubuntu7.10)
·Linux 平台下的GCC的编译及使用
·Linux环境下创建静态库和动态库
·Linux fedore core 4内核编译过程讲解
·Linux系统中运行命令时CTRL Z的作用
·C-Kermit安装和使用及下载内核方法
·Linux环境下识别编码新命令(enca)很
·Linux操作系统中改变shell的颜色
·Debian Linux下编译内核标准方式简述
·Ubuntu环境安装Qt4和使用Qt4初体验
·在虚拟机的Lnux系统下编译C程序
·新手学习 Linux系统中添加自己的库文件
  阅读排行
·开源空间 网络安全工具开发函数库Libne
·Linux socket编程实例:echo服务器程序
·GNU/Linux应用程序编程:用管道进行编
·Linux编程时获取当前时间实例解析
·Linux程序设计入门 系统进程的详细介绍
·升级Redhat Linux 9.0内核有感
·Linux下Qtopia Core 4.3(QT/E)交叉编译
·Linux环境下OpenGL编程学习
·如何在Ubuntu 7.0上实现C/C++开发环境
·Linux系统中限制用户进程CPU及内存占用
·Linux下安装g77 fortran complier过程
·SUSE Linux中安装Quartus 7.2过程笔记
·把Linux9.0的内核升级为2.6.18
·Linux系统中BSD套接口开发基础介绍
·解决Linux中Matlab中文乱码问题
网摘收藏: