Linux工具---awk

概念
grep和sed工具只能以行为默认单位,相对于他俩而言,awk不仅仅可以以行为单位,也可以以列为单位。
awk默认的行分隔符是\n,默认的列分隔符是连续的空格和Tab。
awk命令行的基本形式为:
①awk option ‘script’ file1 file2 …

②awk option -f scriptfile file1 file2 …
和sed的用法基本一样。awk可以在命令行调用,如①;也可编写一个脚本文件,用-f 调用如②。
编辑命令的格式如下
/pattern/{actions}
pattern是正则表达式,action是一系列操作。

$1,$2..分别表示第一列,第二列等。类似于shell中的位置参数,$0表示整个行
这里写图片描述

这里写图片描述
awk和C语言有非常相似的语言,有printf函数,也可使用变量,无需定义。所以说awk是一门弱类型,解释型语言。
如统计文件的空行
这里写图片描述
统计文件的行数
这里写图片描述
awk中的condition可以是两个特殊的BEGIN和END。处理文件前,BEGIN后的action执行一次,处理文件结束后,END后的action执行一次。
awk的调用方式
①命令方式
awk [-F 域分隔符] ‘commands’ file
[]是可选的,默认域分隔符是连续的空格或Tab
一行内容称为一个记录,每行中以域分隔符分开的一列称为一个域。
这里写图片描述
②shell脚本方式
编写脚本文件,求1~100的和
这里写图片描述
ps:注意编写awk脚本文件时,第一行为 #!/usr/bin/awk,此时在命令行调用awk脚本文件时就如上面图中的做法,还有另一种就是在第一行时直接加上-f。即 #!/usr/bin/awk -f ,此时在命令行调用awk脚本时,如下
这里写图片描述
awk与正则表达式
awk支持正则表达式的
①awk ‘REG/{action}’ file
②awk正则运算语句(~、~!(! ~))
这里写图片描述
③awk内置使用正则表达式函数
gsub( Ere, Repl, [ In ] ) 在整个ln中,用Repl代替Ere
sub( Ere, Repl, [ In ] ) 在整个ln中,用最长的Repl代替Ere
match( String, Ere ) 检测string是否包含Ere
split( String, A, [Ere] ) 使用Ere为域分隔符,将string分成序列A
以上的函数不太常用,就举个match的例子
这里写图片描述
awk内置变量
ARGC 命令行参数个数
ENVIRON 支持队列中系统环境变量的使⽤用 FILENAME awk浏览的⽂文件名
FNR 浏览⽂文件的记录数
FS 设置输⼊入域分隔符,等价于命令行-F选项
NF 浏览记录的域的个数
NR 已读的记录数
OFS 输出域分隔符
ORS 输出记录分隔符
RS 控制记录分隔符
这里写图片描述
awk中的print和printf
其中print函数的参数可以是变量、数值或者字符串。字符串必须⽤用双引号引⽤用,参数⽤用逗号分隔。如果没有逗号,参数就串联在一起而无法区分。这里,逗号的作⽤用与输出⽂文件的分隔符的作用是一样的,只是后者是空格而已。
printf函数,其用法和c语⾔言中printf基本相似,可以格式化字符串,输出复杂时,printf更 加好用,代码更易懂。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值