- 论坛徽章:
- 0
|
有三种方式调用a w k
第一种是命令行方式,如:
awk -F: 'command' input_file
这里,command是真正的a w k命令。本章将经常使用这种方法。
上面例子中, [ - F域分隔符]是可选的,因为a w k使用空格作为缺省的域分隔符,因此如果要浏览域间有空格的文本,不必指定这个选项
,但如果要浏览诸如passwd文件,此文件各域以冒号作为分隔符,则必须指明- F选项.
第二种方法是将所有awk命令插入一个文件,并使awk程序可执行,然后用awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用它
第三种方式是将所有的awk命令插入一个单独文件,然后调用:
awk -f awk_script_file input_file
-f选项指明在文件a w k _ s c r i p t _ f i l e中的a w k脚本, i n p u t _ f i l e ( s )是使用a w k进行浏览的文件名。
一 awk
1 有三种方式调用a w k
第一种是命令行方式,如:
awk -F: 'command' input_file
这里,command是真正的a w k命令。本章将经常使用这种方法。
上面例子中, [ - F域分隔符]是可选的,因为a w k使用空格作为缺省的域分隔符,因此如果要浏览域间有空格的文本,不必指定这个选项
,但如果要浏览诸如passwd文件,此文件各域以冒号作为分隔符,则必须指明- F选项.
第二种方法是将所有awk命令插入一个文件,并使awk程序可执行,然后用awk命令解释器作为脚本的首行,以便通过键入脚本名称来调用它
第三种方式是将所有的awk命令插入一个单独文件,然后调用:
awk -f awk_script_file input_file
-f选项指明在文件a w k _ s c r i p t _ f i l e中的a w k脚本, i n p u t _ f i l e ( s )是使用a w k进行浏览的文件名。
2 域和记录
a w k执行时,其浏览域标记为$ 1,$ 2 . . . $ n。这种方法称为域标识。使用这些域标识将更容易对域进行进一步处理。
使用$ 1 , $ 3表示参照第1和第3域,注意这里用逗号做域分隔。如果希望打印一个有5个域的记录的所有域,不必指明$ 1 , $ 2 , $ 3 ,
$ 4 , $ 5,可使用$ 0,意即所有域。Aw k浏览时,到达一新行,即假定到达包含域的记录末尾,然后执行新记录下一行的读动作,并重
新设置域分隔。
注意执行时不要混淆符号$和s h e l l提示符$,它们是不同的。为打印一个域或所有域,使用p r i n t命令。这是一个a w k动作(
动作语法用圆括号{}括起来)。
3 awk 正则表达式及其 操作
awk条件操作符
= 大于等于
> 关系操作符
+ - * / % ^ 算术操作符
++ -- 前缀和后缀
7 内置的字符串函数
awk有许多强大的字符串函数,见表9 - 4。
gsub(r,s) 在整个$ 0中用s替代r
gsub(r,s,t) 在整个t中用s替代r
index(s,t) 返回s中字符串t的第一位置
length(s) 返回s长度
match(s,r) 测试s是否包含匹配r的字符串
split(s,a,fs) 在fs上将s分成序列a
sprint(fmt,exp) 返回经f m t格式化后的e x p
sub(r,s) 用$ 0中最左边最长的子串代替s
substr(s,p) 返回字符串s中从p开始的后缀部分
substr(s,p,n) 返回字符串s中从p开始长度为n的后缀部分
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/4591/showart_13924.html |
|