Chinaunix首页 | 论坛 | 博客
  • 博客访问: 113544
  • 博文数量: 26
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 122
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-11 10:02
个人简介

分享是一种快乐!

文章分类

全部博文(26)

文章存档

2014年(11)

2013年(15)

我的朋友

分类: C/C++

2014-04-18 12:01:28


AWK 脚本的编程模型

  1. #! /usr/bin/awk -f
  2.  
  3. //第一部分,当读取文件开始之前执行
  4. BEGIN {
  5. //设置分隔符 FS = "\t"
  6. //初始化一些变量
  7. }
  8. //第二部分,读取文件的每一行
  9. {

  10. //以行的形式读取文件,文件最后的一行
  11.  // 如果需要缓存文件内容,将文件存入数组中
  12. }

  13. //第三部分,当读取文件结束时执行

  14. END {
  15.    //如果缓存文件,对缓存文件进行处理
       // 重定向文件

  16. }

 AWK 编程说明
 1 awk在处理文件的时候往往需要获取文件的名字,通过FILENAME变量可以获取到,但是在第一部分是无法获取文件的名字,只能在第二部分或者第三部分获取。

 2 awk对文件的内容进行缓存的时候是通过数组的实现的,常用的是多维数组。awk的数组的下标可以是字符串。

3 在第三部分中是没有第二部分中的$0,$1,$2,$..,概念的。

4 在第三部分中调用shell的环境变量
"echo $HOME" | getline user_home;

5 awk中调用shell 命令
cmd = sprintf("%s%s","mkdir ",dir_name);
system(cmd);
system("chmod 777 " dir_name);

6 常用库函数的解释
index  Example->>>tmp = index("abc","a"); a = 1,返回第一次出现索引位置,如果不存在返回0 ;用于查找字符串
split    Example->>>split("a_b_c",array,"_");-------array[1] = a;array[2] =b;array[3] = c ;用于分隔字符串
substr Example->>>tmp = substr("abcd",1,3) ;tmp = "abc";用于截取字符串
gsub   Example->>>sub_file_name = abc.txt; gsub(/\.txt/,"",sub_file_name);  sub_file_name -->abc;替换并将改变原字符串
sprintf Example->>>tmp = sprintf("%s%s%s","a","b","c");tmp --->abc;可用于拼接字符串

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