shell脚本三剑客之awk

awk文本三剑客之一,是功能最强大的文本工具

awk也是按行来进行操作,对行操作完之后,可以根据指定命令来对行取列

awk的分隔符:默认分隔符是空格或者tab键,多个空格,会自动压缩成一个

用法:

awk 选项'模式或者条件{操作}'文件 -F:指定分隔符,如果是空格,不需要加F -v:变量赋值 操作:默认就是打印

$0打印全部

awk常用的内置变量:

$0:打印全部内容 $n:处理行的第几列 NR:处理的行的行号 NF:处理当前行的字段个数,$NF就表示最后一个字段 FS:列分隔符,指定文本的分隔符,和F作用一致,-F:FS=“:” OFS:输出文本的分隔符 RS:指定分隔符为回车 内置变量$n要加$,其他的内置变量不能加$,更不能用引号,也不能用括号,否则会被当成字符串来处理

shell脚本三剑客之awk_第1张图片

即打印行号也打印内容

指定第三行输出

二到四行输出

二和四行输出

shell脚本三剑客之awk_第2张图片

奇数


偶数


awk运算: awk 'BEGIN{print10+20}'

shell脚本三剑客之awk_第3张图片

 

 shell脚本三剑客之awk_第4张图片

awk的内置函数:getline

1、如果getiline左右没有重定向符号(<,>)或者没有(|)管道符时,awk会先读第一行,但是如果加了getline跳过第一行读取第二行

shell脚本三剑客之awk_第5张图片

2、如果两边有重定向或者管道符,getiline作用于定向输入文件

shell脚本三剑客之awk_第6张图片

 shell脚本三剑客之awk_第7张图片

 shell脚本三剑客之awk_第8张图片

BEGIN模式

awk'BEGIN{..};{..}END{..}'文件 在对文件进行操作之前,会先执行BEGIN{..}模式条件,或者是命令操作中间的{..}是真正的用于处理文件的命令 END{..}结束语句就是打印执行结果


-v变量赋值 改变分隔符

awk条件判断打印


awk支持条件判断语句if


三元表达式:类似java awk'(条件表达式)?(A表达式或表达值):(B的表达式或者值)'

?if

:else

shell脚本三剑客之awk_第9张图片

awk的精确筛选:

$3>$4

<>=

 

 

 

$NF就表示最后一个字段

 

 

awk和tr改变分隔符

shell脚本三剑客之awk_第10张图片

 


awk结合数组来进行使用 在awk中,怎么来定义数组

shell脚本三剑客之awk_第11张图片

 

 

shell脚本三剑客之awk_第12张图片

 

你可能感兴趣的:(linux,服务器,运维)