|
6 | 6 | \begin{document} |
7 | 7 | \maketitle |
8 | 8 |
|
9 | | -AWK是一门脚本语言,具体历史不再赘述。目前比较知名的三个实现是nawk,gawk和mawk。其中mawk号称是速度最快的,不过好久 |
10 | | -没有更新了\footnote{http://invisible-island.net/mawk/}。这里面主要涉及到gawk(GNU/Linux, FreeBSD, NetBSD)和nawk(NetBSD, |
11 | | -FreeBSD).相比于sed,AWK更善于处理列,更精确的说是字段(field)。 |
| 9 | +AWK是一门脚本语言,具体历史不再赘述。目前比较知名的三个 |
| 10 | +实现是nawk,gawk和mawk。其中mawk号称是速度最快的,不过好久 |
| 11 | +没有更新了\footnote{http://invisible-island.net/mawk/}。这里面主要涉 |
| 12 | +及到gawk(GNU/Linux, FreeBSD, NetBSD)和nawk(NetBSD, |
| 13 | +FreeBSD)\footnote{命令行或者代码中的awk,在不同的系统上链接为 |
| 14 | +不同变种。如果是不同变种的特性,会用对应的变种名指出}。 |
| 15 | +相比于sed,AWK更善于处理列,更精确的说是字段(field)。 |
12 | 16 |
|
13 | 17 | \section{AWK的基本用法} |
14 | 18 |
|
15 | 19 | \input {../common/awkconf_nolineno.tex} |
16 | 20 |
|
17 | 21 |
|
18 | | -AWK代码是由单引号(`')和大括号(\{\})括起来的。下面是一个非常简单的例子:\\ |
| 22 | +AWK代码是由单引号(`')和大括号(\{\})括起来的。下面是一个非 |
| 23 | +常简单的例子\footnote{我是喜欢bash及zsh的。但却喜欢csh |
| 24 | +的默认的命令提示符\%}。:\\ |
19 | 25 |
|
20 | 26 | \begin{lstlisting}[title={简单例子},abovecaptionskip=0.5cm] |
21 | 27 |
|
22 | 28 | %echo one two three | awk '{print $2}' |
23 | 29 | two |
24 | 30 | \end{lstlisting} |
25 | 31 |
|
| 32 | +\$2为AWK内置的变量,表示第二个字段(从1开始数)。\$0表示整个记录(record)。 |
| 33 | +下面是常见的内置变量\footnote{详细可以参看awk在线手册}:\\ |
| 34 | + |
| 35 | +\begin{tabular}{| c | c |} |
| 36 | + \hline |
| 37 | + \$0 & 整个记录(record)\\ |
| 38 | + \hline |
| 39 | + \$1,\$n & 第1,n个字段(filed)\\ |
| 40 | + \hline |
| 41 | + NF & 当前记录字段的个数(number of filed)\\ |
| 42 | + \hline |
| 43 | + NR & 目前为止遇到的总记录数(number of record)\\ |
| 44 | + \hline |
| 45 | + FS & 字段分隔符\\ |
| 46 | + \hline |
| 47 | +\end{tabular} |
| 48 | + |
| 49 | + |
| 50 | + |
| 51 | + |
| 52 | + |
26 | 53 |
|
27 | 54 |
|
28 | 55 | \end{document} |
|
0 commit comments