Linux awk command

Source:
1.Linux awk命令详解
2. linux awk命令详解
3.linux-shell脚本命令之awk
4.awk文本处理总结(入门,中级,高级)
5.Learning Linux Commands: awk 有很多例子
6. AWK 非常详细的教程


grep 算是查找命令,sed 是编辑,awk 是一个更强大的文本分析工具。
awk 是逐行读入,以空格为默认分隔符切片,切片的部分再进行各种处理。可以把awk认为是一种轻量级的编程语言。
它以文件的一行为处理单位,每接受一行,执行相应的命令,来处理文本

basic syntax

awk [-F field-separator] ‘command’ filename

[-F field-separator] 可选参数
‘command’ : command 必须用apostrophe括起

Example

Basic

awk ‘{print $1}’

输出第一列, ( 0 1代表第1列, 以空格分割)

awk -F ‘:’ ‘{print $1}’

-F ‘:’, 以 colon 分割

awk -F ‘:’ ‘BEGIN {print “name, shell”} {print 1"," 7} END{print “blue, /bin/nosh”}

Begin 会再最开始输出,End 会最后输出

awk -F: ‘/root/{print &7}’ /etc/passwd

这个是使用pattern的例子,匹配了pattern(这里是root)的行才会执行action(如果没有action,就会默认输出每行的内容)。 这里把匹配root的行的第7列输出来


awk 内置变量

ARGC: 命令行参数个数
ARGV: 命令行参数排列
ENVIRON: 支持队列中系统的环境变量的使用
FILENAME: awk 浏览的文件名
FNR: 浏览文件的记录数
FS: 设置输入域分割符,等价于命令行 -F 选项
NF: 浏览记录的域的个数
NR: 已读的记录数
OFS: 输出域分隔符
ORS:输出记录分隔符
RS:控制记录分隔符

awk -F ‘:’ ‘{print “filename:” FILENAME, “,linenumber:” NR “,columns:” NF “,linecontent:” $0}’

也可以使用 printf

awk -F ‘:’ ‘{printf(“filename:%10s, linenumber:%s, column:%s, linecontent:%s\n”,FILENAME, NR,NF,$0)}’


变量和赋值

可以自定义变量

awk ‘BEGIN{count =0} {count++;print $0;} END{print “user count is “, count}’ filename

count 是自定义变量。 action { } 可以有多个语句,用;分开

ls -l | awk ‘BEGIN {size=0;} {size=size+$5} END{print “[end] size is “,size}’

统计某个文件夹下的文件占用的字节数

ls -l | awk ‘BEGIN {size=0;} {size=size+$5} END{print “[end] size is “,size/1024/1024, “M”}’

ls -l | awk ‘BEGIN {size=0;}{ if($5!=4096){size = size + $5;} } END{print “[end] size is “,size/1024/1024, “M”}’

awk 还支持循环语句,支持 while, do/while, for, break, continue. 这些关键字的语义和C语言的语义完全相同

awk -F ‘:’ ‘BEGIN {count=0;}{name[count]=$1; count++;} END{ for(i=0;i\< NR;i++) print i,name[i] }’ filename

awk ‘NR==4, NR==6’

打印 4 到 6 行

awk ‘$2 ~ /^sa/’ filename

只检查第2列是不是符合 /^sa/ 的匹配

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值