手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

awk man手册

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

ORS
输出记录分隔符(默认值是个换行符)。
RLENGTH
由match函数所匹配的字符串的长度。
RS
记录分隔符(默认是个换行符)。
RSTART
由match函数所匹配的字符串的第一个位置。
SUBSEP
数组下标分隔符(默认值是\034)。
5. awk运算符
Table 2. 运算符
运算符
描述
= = -= *= /= %= ^= **=
赋值
?:
C条件表达式
||
逻辑或
&&
逻辑和
~ ~!
匹配正则表达式和不匹配正则表达式
>= != ==
关系运算符
空格
连接
-
加,减
* / &
乘,除和求余
- !
一元加,减和逻辑非
^ ***
求幂
--
增加或减少,作为前缀或后缀
$
字段引用
in
数组成员
6. 记录和域
6.1. 记录
awk把每一个以换行符结束的行称为一个记录。
记录分隔符:默认的输入和输出的分隔符都是回车,保存在内建变量ORS和RS中。
$0变量:他指的是整条记录。如$ awk '{print $0}' test将输出test文档中的任何记录。
变量NR:一个计数器,每处理完一条记录,NR的值就增加1。如$ awk '{print NR,$0}' test将输出test文档中任何记录,并在记录前显示记录号。
6.2. 域
记录中每个单词称做“域”,默认情况下以空格或tab分隔。awk可跟踪域的个数,并在内建变量NF中保存该值。如$ awk '{print $1,$3}' test将打印test文档中第一和第三个以空格分开的列(域)。
6.3. 域分隔符
内建变量FS保存输入域分隔符的值,默认是空格或tab。我们能够通过-F命令行选项修改FS的值。如$ awk -F: '{print $1,$5}' test将打印以冒号为分隔符的第一,第五列的内容。
能够同时使用多个域分隔符,这时应该把分隔符写成放到方括号中,如$awk -F'[:\t]' '{print $1,$3}' test,表示以空格、冒号和tab作为分隔符。
输出域的分隔符默认是个空格,保存在OFS中。如$ awk -F: '{print $1,$5}' test,$1和$5间的逗号就是OFS的值。
7. gawk专用正则表达式元字符
一般通用的元字符集就不讲了,可参考我的
Sed

Grep
学习笔记。以下几个是gawk专用的,不适合unix版本的awk。
\Y
匹配一个单词开头或末尾的空字符串。
\B
匹配单词内的空字符串。
\
匹配一个单词的开头的空字符串,锚定开始。
\>
匹配一个单词的末尾的空字符串,锚定末尾。
\w
匹配一个字母数字组成的单词。
\W
匹配一个非字母数字组成的单词。
\‘
匹配字符串开头的一个空字符串。
\'
匹配字符串末尾的一个空字符串。
8. POSIX字符集
可参考我的
Grep学习笔记
9. 匹配操作符(~)
用来在记录或域内匹配正则表达式。如$ awk '$1 ~/^root/' test将显示test文档第一列中以root开头的行。
10. 比较表达式
conditional expression1 ? expression2: expression3,例如:$ awk '{max = {$1 > $3} ? $1: $3: print max}' test。假如第一个域大于第三个域,$1就赋值给max,否则$3就赋值给max。
$ awk '$1 $2
$ awk '$1 > 5 && $2
11. 范围模板
范围模板匹配从第一个模板的第一次出现到第二个模板的第一次出现之间任何行。假如有一个模板没出现,则匹配到开头或末尾。如$ awk '/root/,/mysql/' test将显示root第一次出现到mysql第一次出现之间的任何行。
12. 一个验证passwd文档有效性的例子


$ cat /etc/passwd | awk -F: '\

NF != 7{\

printf("line %d,does not have 7 fields:%s\n",NR,$0)}\

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!