Linux Shell三剑客之awk,功能强大的文本处理工具( 二 )


Linux Shell三剑客之awk,功能强大的文本处理工具

文章插图
 
OFS输出间隔为两个制表符t 。
Linux Shell三剑客之awk,功能强大的文本处理工具

文章插图
 
输入内容以@分隔 。
Linux Shell三剑客之awk,功能强大的文本处理工具

文章插图
 
输出内容指定以"++++"分隔 。
awk工作原理
  1. awk使用一行作为输入,并将这一行赋给内部变量$0,每一行也可称为一个记录,以换行符(RS)结束
  2. 每行被间隔符(默认为空格或制表符)分解成字段,每个字段存储在已编号的变量中,从$1开始
  3. 问:awk如何知道用空格来分隔字段的呢?
  4. 答:因为有一个内部变量FS来确定字段分隔符 。初始时,FS赋为空格 。
  5. awk使用print函数打印字段,打印出来的字段会以空格分隔,比如1,1,3之间有一个逗号,但是逗号比较特殊,它映射为另一个内部变量,称为输出字段分隔符OFS,OFS默认为空格 。
  6. awk处理完一行后,将从文件中获取另一行,并将其存储在$0中,覆盖原来的内容,然后将新的字符串分隔成字段并进行处理,该过程将持续到所有行处理完毕 。
awk变量定义 
Linux Shell三剑客之awk,功能强大的文本处理工具

文章插图
 
调用awk中变量不需要加$ 。
逻辑运算符
Linux Shell三剑客之awk,功能强大的文本处理工具

文章插图
 
使用或||运算符打印第1行和第4行 。
Linux Shell三剑客之awk,功能强大的文本处理工具

文章插图
 
匹配1-4行或者以hioiei开头的行 。
流程控制
awk的流程控制和一般编程语言中的逻辑一样,包括选择结构和循环结构,用于处理复杂的命令逻辑 。
【Linux Shell三剑客之awk,功能强大的文本处理工具】if条件判断单分支结构:{if(表达式){语句1;语句2;...}}
Linux Shell三剑客之awk,功能强大的文本处理工具

文章插图
 
双分支结构:{if(表达式){语句;语句;...}else{语句;语句;...}}
Linux Shell三剑客之awk,功能强大的文本处理工具

文章插图
 
多分支结构:{ if(表达式1){语句;语句;...}else if(表达式2){语句;语句;...}else if(表达式3){语句;语句;...}else{语句;语句;...}}
Linux Shell三剑客之awk,功能强大的文本处理工具

文章插图
 
循环结构
Linux Shell三剑客之awk,功能强大的文本处理工具

文章插图
 
while循环打印1-10
Linux Shell三剑客之awk,功能强大的文本处理工具

文章插图
 
for循环打印1-10并求和,结果55 。
Linux Shell三剑客之awk,功能强大的文本处理工具

文章插图
 
break跳出整个循环,continue跳出本次循环,继续进入下一次循环,由于本次结束后,i并没有加1,因此程序一直卡住 。


推荐阅读