awk的用法一

参考文章1http://blog.chinaunix.net/uid-23302288-id-3785105.html
参考文章2https://www.runoob.com/linux/linux-comm-awk.html
参考文章3https://blog.csdn.net/start_2013/article/details/109516934
awk用来处理文本,按行读取进行处理

一、指定分隔符分割文本

log.txt中的文本内容

2 this is a test
3 Do you like awk
This's a test
10 There are orange,apple,mongo

命令格式

awk -F
格式 awk -F[分隔符] '{动作}' 文件名

  1. 不指定分隔符的类型,默认是空格或者tab
    $0: 每行的所有字符串
    $1: 每行切分后的第1个字符串
    $2: 每行切分后的第2个字符串
    awk '{print $1,$2}' log.txt
    没有指定分隔符,使用空格或者tab,将每行的文本内容分开,打印每行、经过切分后的第一个和第二个字符串
    输出
    在这里插入图片描述
    awk -F, '{print $1,$2}' log.txt
  2. 使用单个分隔符,对文本进行切分,由于每行都没有,,原样输出文本内容
    在这里插入图片描述
  3. 使用多个分隔符空格和,对文本进行切分
    awk -F'[ ,]' '{print $1,$2}' log.txt
    在这里插入图片描述
    用两个分隔符-F '/|.json'.这里的分隔符是/json,两者用|分开

二、按条件过滤文本

  1. 过滤第一列大于2的行
    awk '$1>2' log.txt #命令
    在这里插入图片描述
  2. 过滤第一列大于2的行,输出该行的前两个字符串
    awk '$1>2 {print $1,$2}' log.txt
    在这里插入图片描述
  3. 同时满足两个条件。过滤第一列大于2并且第二列等于Do的行
    awk '$1>2 && $2=="D" {print $1,$2,$3}' log.txt
    在这里插入图片描述
  4. 按列数和行数处理
    在这里插入图片描述

三、在行首/行尾添加文本

摘自https://blog.csdn.net/start_2013/article/details/109516934
在前面、后面、指定列添加相同字符
(1)给一个文件中的每一行开头插入字符的方法:awk '{print "需要添加的字符" $0}' fileName

(2)给一个文件中的每一行结尾插入字符的方法:awk '{print $0 "需要添加的字符" }' fileName
(3) 在指定列前添加字符
awk.txt的文本信息如下
在这里插入图片描述

  • 在第一列前加"1start",在第一列后添加"1end",在第2列前加"2start",在第一列后添加"2end"
  • 语句awk '{print "1start " $1 " 1end", "2start " $1 " 2end"}' awk.txt
  • 在这里插入图片描述

四、设置变量

参考https://www.runoob.com/linux/linux-comm-awk.html
在这里插入图片描述
awk -v src_img_dir_name='abc' -F '/|.json' '$11 >0.85 {print "../x3_person/images_org/"src_img_dir_name"/"$10 ".json"}' ${txt_path}.
/json划分txt_path文件中每一行的内容,然后将每行中第11个元素的值大于0.85的,输出../x3_person/images_org/"src_img_dir_name"/"$10src_img_dir_name是在awk中设置变量名

在这里插入图片描述

txt_path文档中,第一个数值大于person_num变量有多少行

group_num=$(awk -v person_num="${person_num}" '$1 > person_num' "${txt_path}" | wc -l)

五、应用实例

1. 统计yolo模型推理出的某个类别的目标数

find file_name -name "*.txt" | xargs awk -F '[ ]' '$1=cls {print $0}' | wc -l
例:find exp10_ep500_10326 -name "*.txt" | xargs awk -F '[ ]' '$1==0 {print $0}' | wc -l

  • 先找出所有的推理结果文件(txt文件)
  • 用awk处理每个文件(txt文件的格式如下,第一个值是类别),取类别为cls的目标的数量
    在这里插入图片描述
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值