📄 00000007.htm
字号:
regexp 也能使用在比较的算式。 <BR> <BR>exp ~ /regexp/ <BR> 如果 exp 符合 regexp,则结果为真(true)。 <BR> <BR>exp !~ /regexp/ <BR> 如果 exp 不符合 regexp,则结果为真。 <BR> <BR> <BR> <BR> 5.3 比较的算式当作Patterns <BR> <BR> 比较的 pattern 用来测试两个数字或字串的关系诸如大於、等於 <BR>、小於。下面列出一些比较的pattern: <BR> <BR>x<y 如果 x 小於 y,则结果为真。 <BR>x<=y 如果 x 小於、等於 y,则结果为真。 <BR>x>y 如果 x 大於 y,则结果为真。 <BR>x>=y 如果 x 大於、等於 y,则结果为真。 <BR>x==y 如果 x 等於 y,则结果为真。 <BR>x!=y 如果 x 不等於 y,则结果为真。 <BR>x~y 如果 x 符合 regular expression y,则结果为真。 <BR>x!~y 如果 x 不符合 regular expression y,则结果为真。 <BR> <BR> 上面所提到的 x 与 y,如果二者皆是数字则视为数字之间的比较, <BR>否则它们会被转换成字串且以字串的形式做比较。两个字串的比较, <BR>会先比较第一个字元,然後比较第二个字元,依此类推,直到有不同 <BR>的地方出现为止。如果两个字串在较短的一个结束之前是相等,则视 <BR>为长的字串比短的字串大。例如 "10" 比 "9" 小,"abc" 比 "abcd" 小。 <BR> <BR> <BR> <BR> 5.4 使用布林运算的Patterns <BR> <BR> 一个布林(boolean) pattern 是使用布林运算"或"('||'),"及" <BR>('&&'),"反"('!')来组合其它的pattern。 <BR>例如: <BR> <BR> gawk '/2400/ && /foo/' BBS-list <BR> gawk '/2400/ || /foo/' BBS-list <BR> gawk '! /foo/' BBS-list <BR> <BR> <BR> <BR>第六章 算式(Expression)作为Actions的叙述 <BR> <BR> 算式(Expression) 是gawk程式里面action的基本构成者。 <BR> <BR> <BR> <BR> 6.1 算术运算 <BR> <BR> gawk 里的算术运算如下所示: <BR> <BR>x+y 加 <BR>x-y 减 <BR>-x 负 <BR>+x 正。实际上没有任何影响。 <BR>x*y 乘 <BR>x/y 除 <BR>x%y 求馀数。例如 5%3=2。 <BR>x^y <BR>x**y x 的 y 次方。例如2^3=8。 <BR> <BR> <BR> <BR> 6.2 比较算式与布林算式 <BR> <BR> 比较算式 (comparison expression) 用来比较字串或数字的关系 <BR>,运算符号与 C 语言相同。表列如下: <BR> <BR>x<y <BR>x<=y <BR>x>y <BR>x>=y <BR>x==y <BR>x!=y <BR>x~y <BR>x!~y <BR> <BR>比较的结果为真(true)则其值是 1。否则其值是 0。 <BR> <BR> 布林算式(boolean expression)有下面三种: <BR> <BR>boolean1 && boolean2 <BR>boolean1 || boolean2 <BR>! boolean <BR> <BR> <BR> <BR> 6.3 条件算式(Conditional Expressions) <BR> <BR> 一个条件式算式是一种特别的算式,它含有3个运算元。 <BR> 条件式算式与C语言的相同: <BR> <BR> selector ? if-true-exp : if-false-exp <BR> <BR>它有3个子算式。第一个子算式selector 首先会被计算。如果是真, <BR>则if-true-exp会被计算且它的值变成整个算式的值。否则if-false- <BR>exp 会被计算且它的值变成整个算式的值。 <BR> <BR> 例如下面的例子会产生x的绝对值: <BR> <BR> x>0 ? x : -x <BR> <BR> <BR> <BR>第七章 Actions里面的控制叙述 <BR> <BR> 在 gawk 程式里面,控制叙述诸如 if、while 等控制程式执行的流 <BR>程。在 gawk 里的控制叙述与 C 的类似。 <BR> <BR> 很多的控制叙述会包括其它的叙述,被包括的叙述称为 body。假 <BR>如 body 里面包括一个以上的叙述,必须以大括弧 { } 将这些叙述括起 <BR>来,而各个叙述之间需以换行(newline)或分号隔开。 <BR> <BR> <BR> <BR> 7.1 if 叙述 <BR> <BR> if (condition) then-body [else else-body] <BR> <BR>如果 condition 为真(true),则执行 then-body,否则执行 else-body。 <BR> <BR> 举一个例子如下: <BR> <BR> if (x % 2 == 0) <BR> print "x is even" <BR> else <BR> print "x is odd" <BR> <BR> <BR> <BR> 7.2 while 叙述 <BR> <BR> while (condition) <BR> body <BR> <BR>while 叙述做的第一件事就是测试 condition。假如 condition 为真则 <BR>执行 body 的叙述。body 的叙述执行完後,会再测试 condition,假如 <BR>condition 为真,则 body 会再度被执行。这个过程会一直被重复直到 <BR>condition 不再是真。如果 condition 第一次测试就是伪(false),则 <BR>body 从没有被执行。 <BR> <BR> 下面的例子会印出每个输入记录(record)的前三个栏位。 <BR> <BR> gawk '{ i=1 <BR> while (i <= 3) { <BR> print $i <BR> i++ <BR> } <BR> }' <BR> <BR> <BR> <BR> 7.3 do-while 叙述 <BR> <BR> do <BR> body <BR> while (condition) <BR> <BR>这个 do loop 执行 body 一次,然後只要 condition 是真则会重复执行 body。 <BR>即使开始时 condition 是伪,body 也会被执行一次。 <BR> <BR> 下面的例子会印出每个输入记录十次。 <BR> <BR> gawk '{ i= 1 <BR> do { <BR> print $0 <BR> i++ <BR> } while (i <= 10) <BR> }' <BR> <BR> <BR> <BR> 7.4 for 叙述 <BR> <BR> for (initialization; condition; increment) <BR> body <BR> <BR>此叙述开始时会执行initialization,然後只要 condition是真,它 <BR>会重复执行body与做increment 。 <BR> <BR> 下面的例子会印出每个输入记录的前三个栏位。 <BR> <BR> gawk '{ for (i=1; i<=3; i++) <BR> print $i <BR> }' <BR> <BR> <BR> <BR> 7.5 break 叙述 <BR> <BR> break 叙述会跳出包含它的 for、while、do-while 回圈的最内层。 <BR> <BR> 下面的例子会找出任何整数的最小除数,它也会判断是否为质数。 <BR> <BR> gawk '# find smallest divisor of num <BR> { num=$1 <BR> for (div=2; div*div <=num; div++) <BR> if (num % div == 0) <BR> break <BR> if (num % div == 0) <BR> printf "Smallest divisor of %d is %d\n", num, div <BR> else <BR> printf "%d is prime\n", num }' <BR> <BR> <BR> <BR> 7.6 continue 叙述 <BR> <BR> continue 叙述使用於 for、while、do-while 回圈内部,它会跳 <BR>过回圈 body 的剩馀部分,使得它立刻进行下一次回圈的执行。 <BR> <BR> 下面的例子会印出 0 至 20 的全部数字,但是 5 并不会被印出。 <BR> <BR> gawk 'BEGIN { <BR> for (x=0; x<=20; x++) { <BR> if (x==5) <BR> continue <BR> printf ("%d",x) <BR> } <BR> print "" <BR> }' <BR> <BR> <BR> <BR> 7.7 next 叙述、next file 叙述、exit 叙述 <BR> <BR> next 叙述强迫 gawk 立刻停止处理目前的记录(record)而继续下一 <BR>个记录。 <BR> <BR> next file 叙述类似 next。然而,它强迫 gawk 立刻停止处理目前 <BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -