linux八个重要命令(5)

2020-05-08 11:39

awk中的条件语句是从C语言中借鉴过来的,可控制程序的流程。 14.5.1. if语句

格式:

{if (expression){

statement; statement; ... } }

$ awk '{if ($1 <$2) print $2 \。如果第一个域小于第二个域则打印。

$ awk '{if ($1 < $2) {count++; print \如果第一个域小于第二个域,则count加一,并打印ok。 14.5.2. if/else语句,用于双重判断。

格式:

{if (expression){

statement; statement; ... } else{

statement; statement; ... } }

$ awk '{if ($1 > 100) print $1 \。如果$1大于100则打印$1 bad,否则打印ok。

$ awk '{if ($1 > 100){ count++; print $1} else {count--; print $2}' test。如果$1大于100,则count加一,并打印$1,否则count减一,并打印$1。

14.5.3. if/else else if语句,用于多重判断。 格式:

{if (expression){

statement; statement; ... }

else if (expression){

statement; statement; ... }

else if (expression){

statement; statement; ... } else {

statement; statement; ... } }

14.6. 循环

awk有三种循环:while循环;for循环;special for循环。

? $ awk '{ i = 1; while ( i <= NF ) { print NF,$i; i++}}' test。变量的初始值为1,若i小于可等于NF(记录中域的个数),则执行打印语句,且i增加1。直到i的值大于NF.

? $ awk '{for (i = 1; i

?

? ? ? ? ?

breadkcontinue语句。break用于在满足条件的情况下跳出循环;continue用于在满足条件的情况下忽略后面的语句,直接返回循环的顶端。如:

{for ( x=3; x<=NF; x++)

if ($x<0){print \{for ( x=3; x<=NF; x++)

if ($x==0){print \

next语句从输入文件中读取一行,然后从头开始执行awk脚本。如: ? {if ($1 ~/test/){next} ? else {print} ? }

? ?

exit语句用于结束awk程序,但不会略过END块。退出状态为0代表成功,非零值表示出错。

14.7. 数组

awk中的数组的下标可以是数字和字母,称为关联数组。 14.7.1. 下标与关联数组

?

用变量作为数组下标。如:$ awk {name[x++]=$2};END{for(i=0;i

? ? ? ? ?

special for循环用于读取关联数组中的元素。格式如下: {for (item in arrayname){

print arrayname[item] } }

$ awk '/^tom/{name[NR]=$1}; END{for(i in name){print name[i]}}' test。打印有值的数组元素。打印的顺序是随机的。

用字符串作为下标。如:count[\

? 用域值作为数组的下标。一种新的for循环方式,for (index_value in array) statement。如:$ awk '{count[$1]++}

END{for(name in count) print name,count[name]}' test。该语句将打印$1中字符串出现的次数。它首先以第一个域作数组count的下标,第一个域变化,索引就变化。

? delete函数用于删除数组元素。如:$ awk '{line[x++]=$1} END{for(x in line) delete(line[x])}' test。分配给数组line的是第一个域的值,所有记录处理完成后,special for循环将删除每一个元素。

?

14.8. awk的内建函数

14.8.1. 字符串函数

sub函数匹配记录中最大、最靠左边的子字符串的正则表达式,并用替换字符串替换这些字符串。如果没有指定目标字符串就默认使用整个记录。替换只发生在第一次匹配的时候。格式如下: ? sub (regular expression, substitution string): ? sub (regular expression, substitution string, target string)

?

实例:

$ awk '{ sub(/test/, \

$ awk '{ sub(/test/, \

第一个例子在整个记录中匹配,替换只发生在第一次匹配发生的时候。如要在整个文件中进行匹配需要用到gsub 第二个例子在整个记录的第一个域中进行匹配,替换只发生在第一次匹配发生的时候。 gsub函数作用如sub,但它在整个文档中进行匹配。格式如下: ? gsub (regular expression, substitution string) ? gsub (regular expression, substitution string, target string)

?

实例:

$ awk '{ gsub(/test/, \

$ awk '{ gsub(/test/, \第一个例子在整个文档中匹配test,匹配的都被替换成mytest。

第二个例子在整个文档的第一个域中匹配,所有匹配的都被替换成mytest。 index函数返回子字符串第一次被匹配的位置,偏移量从位置1开始。格式如下: ? index(string, substring)

?

实例:

$ awk '{ print index(\


linux八个重要命令(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《用7、8、9的乘法口诀求商》教学设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: