awk 命令使用入门基础详解(2)

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专用正则表达式元字符

以下几个是gawk专用的,不适合unix版本的awk。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/11866.html