一个换行符)。 | |
RSTART | 由match函数所匹配的字符串的第一个位置。 |
SUBSEP | 数组下标分隔符(默认值是\034)。 |
awk把每一个以换行符结束的行称为一个记录。
记录分隔符:默认的输入和输出的分隔符都是回车,保存在内建变量ORS和RS中。
$0变量:它指的是整条记录。如$ awk '{print $0}' test将输出test文件中的所有记录。
变量NR:一个计数器,每处理完一条记录,NR的值就增加1。如$ awk '{print NR,$0}' test将输出test文件中所有记录,并在记录前显示记录号。
记录中每个单词称做“域”,默认情况下以空格或tab分隔。awk可跟踪域的个数,并在内建变量NF中保存该值。如$ awk '{print $1,$3}' test将打印test文件中第一和第三个以空格分开的列(域)。
以下几个是gawk专用的,不适合unix版本的awk。
-
\Y
-
匹配一个单词开头或者末尾的空字符串。
\B
-
匹配单词内的空字符串。
\<
-
匹配一个单词的开头的空字符串,锚定开始。
\>
-
匹配一个单词的末尾的空字符串,锚定末尾。
\w
-
匹配一个字母数字组成的单词。
\W
-
匹配一个非字母数字组成的单词。
\‘
-
匹配字符串开头的一个空字符串。
\'
-
匹配字符串末尾的一个空字符串。
conditional expression1 ? expression2: expression3,例如:$ awk '{max = {$1 > $3} ? $1: $3: print max}' test。如果第一个域大于第三个域,$1就赋值给max,否则$3就赋值给max。
$ awk '$1 + $2 < 100' test。如果第一和第二个域相加大于100,则打印这些行。
$ awk '$1 > 5 && $2 < 10' test,如果第一个域大于5,并且第二个域小于10,则打印这些行。