linux命令——awk

今天被面试有个问题一脸懵逼……(。ì _ í。)
awk……这是啥 没用过aaaaa…… But,不会不怕 学就可以了嘛~


一、awk是什么
linux下的文本、数据处理工具

二、awk使用方式
**1.命令行方式 (三、里面会点详细说明)

awk [-F  field-separator] + 'awk命令' + awk_test.txt

[-F域分隔符]可选,文件的每一行中,由-F分开的每一项称为一个域。
2.shell脚本方式
将所有的awk命令插入一个文件,并使awk程序可执行,首行使用#!/bin/awk

3.将所有的awk命令插入一个单独文件,然后调用
awk -f script.awk awk_test.txt
其中,-f选项加载script.awk中的awk脚本

三、使用语法
awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file
BEGIN: 初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符
//:正则或字符串,匹配代码块
{}:包含一条或多条命令,多条命令使用分号分隔
END:结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾信息

#常用内置变量(反正我是背不下来 会用就行了。。。)
 ARGC               命令行参数个数
 ARGV               命令行参数排列
 ENVIRON            支持队列中系统环境变量的使用
 FILENAME           awk浏览的文件名
 FNR                浏览文件的记录数
*FS                 设置输入域分隔符,等价于命令行 -F选项
*NF                 经过-F分割之后,每行的个数
*NR                 行数
*OFS                输出域分隔符(print $1,$2时使用)
 ORS                输出记录分隔符
 RS                 控制记录分隔符

————————————————————————————
————————————————————————————
举例说明

#eg:awk_test.txt
11111 --22222 --33333--4444--5555--6666
11111,  22222,  33333-- 4444-- 5555-- 6666
11111:  22222:  33333-- 4444-- 5555-- 6666

1、-F是什么鬼,$n是什么

#awk -F'-- ' '{print $1 $2}' awk_test.txt
#$1和$2代表第一列、第二列(默认每行按空格分割,这里按'-- '分割,$1 $2为分割后的)
11111 --22222 --33333--4444--5555--6666
11111,  22222,  333334444
11111:  22222:  333334444
#awk -F'-- ' '{print $1,$2}' awk_test.txt
11111 --22222 --33333--4444--5555--6666 
11111,  22222,  33333 4444
11111:  22222:  33333 4444

敲黑板:
i、print $1 $2 和 print $1,$2 是不一样的!
空格这种:连续输出
逗号这种:输出后按空格分割,如果想修改,使用awk -F’-- ’ ‘{print $1,$2}’ OFS=’…’ awk_test.txt
ii、$0代表一行 $n 代表-F分割之后的第n段

2、应用

  • 2.1 输出第一列的和:
awk 'BEGIN {count=0} {count=count+$1;} END{print count}' awk_test.txt
#输出:33333
  • 2.2 打印某个文件夹下的文件占用的字节数:
ls -l |awk '{print $5}'
  • 2.3 统计某文件夹下的文件占用的字节数,输出文件大小>1024Byte的文件(一般都是文件夹),输出这些文件个数:
ls -l |awk 'BEGIN {size=0;count=0;print "start"} {if($5>1024){count=count+1; print"size: ", $5/1024, "K";}} END{print "[end]count=", count}'
#输出如下:
start
size:  1.46094 K
size:  1.92578 K
[end]count= 2
  • 2.4 与其他命令连起来用,删除所有符合条件的docker container进程
docker ps -a |grep 条件 |awk '{print $1}' |xargs docker rm
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值