先看看AWK有诸多函数的两个:
tolower( String ) 返回 String 参数指定的字符串,字符串中每个大写字符将更改为小写。大写和小写的映射由当前语言环境的 LC_CTYPE 范畴定义。
toupper( String ) 返回 String 参数指定的字符串,字符串中每个小写字符将更改为大写。大写和小写的映射由当前语言环境的 LC_CTYPE 范畴定义。
下面和AWK BEGIN用法一例
- #!/usr/bin/awk -f
- BEGIN{
- hfile = "awktest.h"
- header="_"toupper(hfile)"_"
- gsub(/\./,"_",header)
- print \
- "#ifndef " header "\n" \
- "#define " header "\n" >hfile
- }
关于:#!/usr/bin/awk -f
Linux下脚本的第一行#! 是指明本脚本使用哪个解释器来执行当前脚本,从头文件看出这个一个awk脚本,第一行的意思可以理解为 使用 /usr/bin/awk -f 脚本名 来执行当前脚本:
比如脚本:test.awk的第一行是#!/usr/bin/awk -f那么执行这个脚本的时候就会根据第一行去寻找解释器,效果相当于在shell下执行
/usr/bin/awk -f test.akw
这里的-f是awk命令的一个参数,是从文件中读取脚本执行的意思.
- hfile=”awktest.h”
- header=”_”toupper(hfile)”_”
- =>
- header=”_AWKTEST.H_“
还有一个点如何去掉?
gsub( Ere, Repl, [ In ] ) 除了正则表达式所有具体值被替代这点,它和 sub 函数完全一样地执行。
gsub(/\./,”_”,header)
此时header=”_AWKTEST_H_”
另外,AWK中的print说明:
- awk '{print;}' 文件名 -------打印指定文件所有行,输出在控制台
- awk '{print $1,$2,$NF;}' 文件名 -------打印指定文件中的 第一列,第二列和最后一列
参考文献:
http://zh.wikipedia.org/wiki/Awk
http://zhidao.baidu.com/link?url=A-gu8ZRRlsLKJ35WuiH_dk5bA4kP4IgGvBSInbHsv9hq1SwTB9PKE9_65e4Q7aE6-KqT3S703Vs1OiHsf3GTj_