⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000007.htm

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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -