📄 00000007.htm
字号:
<BR>会被分成三个栏位:'m'、' g'、' gai pan'。 <BR> <BR> 在 gawk 程式里,可以使用'='来改变 FS 的值。例如: <BR> <BR> gawk 'BEGIN {FS=","}; {print $2}' <BR> <BR>输入行如下: <BR> <BR> John Q. Smith, 29 Oak St., Walamazoo, MI 42139 <BR> <BR>执行gawk的结果将印出字串 ' 29 Oak St.'。BEGIN 後面的 action 会在 <BR>第一个记录被读取之前执行一次。 <BR> <BR> <BR> <BR>第四章 印出 <BR> <BR> 在gawk程式里,actions 最常做的事就是印出(printing)。简单 <BR>的印出,使用 printe叙述。复杂格式的印出,使用 printf 叙述。 <BR> <BR> <BR> <BR> 4.1 print叙述 <BR> <BR> print 叙述用在简单、标准的输出格式。叙述的格式如下所示: <BR> <BR> print item1, item2, ... <BR> <BR>输出时,各个 item 之间会以一个空白分开,最後会换行(newline)。 <BR> <BR> 如果 'print'叙述之後没有跟著任何东西,它与'print $0'的效 <BR>果一样,它会印出现在的记录(record)。要印出空白行可使用'print <BR>""'。 印出一段固定的文字,可用双引号将文字的两边括起来,例如 <BR>'print "Hello there"'。 <BR> <BR> 这里是一个例子,它会把每个输入记录的前二个栏位印出: <BR> <BR> gawk '{print $1,$2}' shipped <BR> <BR> 结果如下所示: <BR>Jan 13 <BR>Feb 15 <BR>Mar 15 <BR>Apr 31 <BR>May 16 <BR>Jun 31 <BR>Jul 24 <BR>Aug 15 <BR>Sep 13 <BR>Oct 29 <BR>Nov 20 <BR>Dec 17 <BR> <BR>Jan 21 <BR>Feb 26 <BR>Mar 24 <BR>Apr 21 <BR> <BR> <BR> <BR> 4.2 Output Separators <BR> <BR> 前面我们已提过如果 print 叙述包含有多个 item,item 之间 <BR>用逗点分开,则印出时各个item会被一个空白隔开。你能够使用任何 <BR>的字串作为 output field separator,可以经由内建变数 OFS 的设 <BR>定来更改 output field separator。OFS 的初始值为" ",即一格的 <BR>空白。 <BR> <BR> 整个 print 叙述的输出被称为 output record。print 叙述输 <BR>出 output record 之後,会接著输出一个字串,此字串称为 output <BR>record separator。内建变数 ORS 用来指明此字串。ORS 的初始值 <BR>为 "\n",也就是换行。 <BR> <BR> 下面这个例子会印出每个记录的第一个栏位和第二个栏位,此二 <BR>个栏位之间以分号';'分开,每行输出之後会加入一个空白行。 <BR> <BR> gawk 'BEGIN {OFS=";"; ORS="\n\n"} {print $1, $2}' BBS-list <BR> <BR> 结果如下所示: <BR>aardvark;555-5553 <BR> <BR>alpo-net;555-3412 <BR> <BR>barfly;555-7685 <BR> <BR>bites;555-1675 <BR> <BR>camelot;555-0542 <BR> <BR>core;555-2912 <BR> <BR>fooey;555-1234 <BR> <BR>foot;555-6699 <BR> <BR>macfoo;555-6480 <BR> <BR>sdace;555-3430 <BR> <BR>sabafoo;555-2127 <BR> <BR> <BR> <BR> <BR> 4.3 printf叙述 <BR> <BR> printf 叙述会使得输出格式较容易精确地控制。printf 叙述可以 <BR>指定每个 item 印出的宽度,也可以指定数字的各种型式。 <BR> <BR> printf 叙述的格式如下: <BR> <BR> printf format, item1, item2, ... <BR> <BR> print 与 printf 的差别是在於 format, printf 的引数比 print <BR>多了字串 format。format 的型式与 ANSI C 的 printf 之格式相同。 <BR> <BR> printf 并不会做自动换行的动作。内建变数 OFS 与 ORS 对 printf 叙 <BR>述没有任何影响。 <BR> <BR> 格式的指定以字元'%'开始,後面接著格式控制字母。 <BR> <BR> 格式控制字母如下所示: <BR> <BR>'c' 将数字以 ASCII 字元印出。 <BR> 例如'printf "%C",65'会印出字元'A'。 <BR> <BR>'d' 印出十进位的整数。 <BR> <BR>'i' 印出十进位的整数。 <BR> <BR>'e' 将数字以科学符号的形式印出。 <BR> 例如 <BR> <BR> print "$4.3e",1950 <BR> <BR> 结果会印出'1.950e+03'。 <BR> <BR>'f' 将数字以浮点的形式印出。 <BR> <BR>'g' 将数字以科学符号的形式或浮点的形式印出。数字的绝对值如果 <BR> 大於等於0.0001则以浮点的形式印出,否则以科学符号的形式印 <BR> 出。 <BR> <BR>'o' 印出无号的八进位整数。 <BR> <BR>'s' 印出一个字串。 <BR> <BR>'x' 印出无号的十六进位整数。10至15以'a'至'f'表示。 <BR> <BR>'X' 印出无号的十六进位整数。10至15以'A'至'F"表示。 <BR> <BR>'%' 它并不是真正的格式控制字母,'%%"将印出"%'。 <BR> <BR> 在 % 与格式控制字母之间可加入 modifier,modifier 是用来进一 <BR>步控制输出的格式。可能的 modifier 如下所示: <BR> <BR>'-' 使用在 width 之前,指明是向左靠齐。如果'-'没有出现,则会在 <BR> 被指定的宽度向右靠齐。例如: <BR> <BR> printf "%-4S", "foo" <BR> <BR> 会印出'foo '。 <BR> <BR>'width' 这一个数字指示相对应的栏位印出时的宽度。例如: <BR> <BR> printf "%4s","foo" <BR> <BR> 会印出' foo'。 <BR> <BR> width 的值是一个最小宽度而非最大宽度。如果一个 item 的 <BR> 值需要的宽度比 width 大,则不受 width 的影响。例如 <BR> <BR> printf "%4s","foobar" <BR> <BR> 将印出'foobar'。 <BR> <BR>'.prec' 此数字指定印出时的精确度。它指定小数点右边的位数。如 <BR> 果是要印出一个字串,它指定此字串最多会被印出多少个字 <BR> 元。 <BR> <BR> <BR> <BR>第五章 patterns <BR> <BR> 在 gawk 程式里面,当 pattern 符合现在的输入记录(record),其 <BR>相对应的 action 才会被执行。 <BR> <BR> <BR> <BR> 5.1 Pattern的种类 <BR> <BR> 这里对 gawk 的各种 pattern 型式作一整理: <BR> <BR>/regular expression/ <BR> 一个 regular expression 当作一个 pattern。每当输入记录 ( <BR> record)含有 regular expression 就视为符合。 <BR> <BR>expression <BR> 一个单一的 expression。当一个值不为 0 或一个字串不是空的, <BR> 则可视为符合。 <BR> <BR>pat1,pat2 <BR> 一对的 patterns 以逗号分开,指定记录的□围。 <BR> <BR>BEGIN <BR>END <BR> 这是特别的 pattern, gawk 在开始执行或要结束时会分别执行相 <BR> 对应於BEGIN或END的 action。 <BR> <BR>null <BR> 这是一个空的pattern,对於每个输入记录皆视为符合pattern。 <BR> <BR> <BR> <BR> 5.2 Regular Expressions当作Patterns <BR> <BR> 一个 regular expression 可简写为 regexp,是一种描述字串的方 <BR>法。一个 regular expression 以斜线('/')包围当作 gawk 的 pattern。 <BR> <BR> 如果输入记录含有 regexp 就视为符合。例如:pattern 为 /foo/, <BR>对於任何输入记录含有'foo'则视为符合。 <BR> <BR> 下面的例子会将含有'foo'的输入记录之第2个栏位印出。 <BR> <BR> gawk '/foo/ {print $2}' BBS-list <BR> <BR> 结果如下: <BR>555-1234 <BR>555-6699 <BR>555-6480 <BR>555-2127 <BR> <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -