【经验总结】Awk中sub函数的用法

经验总结 专栏收录该内容
24 篇文章 0 订阅

Awk中sub函数的用法

By Binary

 

 

 

    有一文本:

        0001|20081223efskjfdj|EREADFASDLKJCV

        0002|20081208djfksdaa|JDKFJALSDJFsddf

        0003|20081208efskjfdj|EREADFASDLKJCV

        0004|20081211djfksdaa1234|JDKFJALSDJFsddf

        ... ...

 

    以'|'为分隔, 现要将第二个域字母前的数字去掉,其他地方都不变, 输出为:

        0001|efskjfdj|EREADFASDLKJCV

        0002|djfksdaa|JDKFJALSDJFsddf

        0003|efskjfdj|EREADFASDLKJCV

        0004|djfksdaa1234|JDKFJALSDJFsddf

        ... ...

 

    解法:

        awk -F '|' 'BEGIN{ OFS="|" } {sub(/[0-9]+/,"",$2);print $0}' data_file

        awk -F '|' -v OFS='|' '{sub(/[0-9]+/,"",$2);print $0}' data_file

 

    其他方法:

 

 

    awk的sub函数用法:

    sub函数匹配指定域/记录中最大、最靠左边的子字符串的正则表达式,并用替换字符串替换这些字符串。

    如果没有指定目标字符串就默认使用整个记录。替换只发生在第一次匹配的时候。格式如下:

        sub (regular expression, substitution string):

        sub (regular expression, substitution string, target string)

    实例:

        $ awk '{ sub(/test/, "mytest"); print }' testfile

        $ awk '{ sub(/test/, "mytest", $1); print }' testfile

    第一个例子在整个记录中匹配,替换只发生在每行第一次匹配发生的时候。

    第二个例子在整个记录的第一个域中进行匹配,替换只发生在每行第一次匹配发生的时候。

    如要在整个文件中进行匹配需要用到gsub

    gsub函数作用如sub,但它在整个文档中进行匹配。格式如下:

        gsub (regular expression, substitution string)

        gsub (regular expression, substitution string, target string)

     实例:

        $ awk '{ gsub(/test/, "mytest"); print }' testfile

        $ awk '{ gsub(/test/, "mytest", $1); print }' testfile

    第一个例子在整个文档中匹配test,匹配的都被替换成mytest。

    第二个例子在整个文档的第一个域中匹配,所有匹配的都被替换成mytest。

 

    另外, 只有当记录中的域有改变的时候 ,指定0FS变量才有用, 如果记录中的域无变化, 指定OFS产生不了实际效果。

              ==========

    awk -F'|' -v OFS='|' '{ gsub(/[0-9]/, "", $3); print $0; }' data.txt   

    将把第三个域中所有数字都去掉。

              ==========

    awk -F'|' -v OFS='|' '{ gsub(/[/x30-/x39]/, "", $3); print $0; }' data.txt 

    另外,对于数字的匹配,可以使用十六进制。

 

 

本文原创自无线技术运营空间: http://wireless.qzone.qq.com 及 http://blog.csdn.net/wireless_tech (专注无线技术运营——无线技术(操作系统/数据库/WEB前端/负载均衡/系统容灾/系统安全/短信接入/WAP接入/3G等)、无线业务运营、无线开放平台、统计分析(用户行为分析/数据挖掘)、CP合作,联系我们:1780551083@qq.com)

  • 1
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

<p> 需要学习Windows系统YOLOv4的同学请前往《Windows版YOLOv4目标检测实战:原理与源码解析》, </p> <p> 课程链接 https://edu.csdn.net/course/detail/29865 </p> <h3> <span style="color:#3598db;">为什么要学习这门课</span> </h3> <p> <span>Linux</span>创始人<span>Linus Torvalds</span>有一句名言:<span>Talk is cheap. Show me the code. </span><strong><span style="color:#ba372a;">冗谈不够,放码过来!</span></strong> </p> <p> <span> </span>代码阅读是从基础到提高的必由之路。尤其对深度学习,许多框架隐藏了神经网络底层的实现,只能在上层调包使用,对其内部原理很难认识清晰,不利于进一步优化和创新。 </p> <p> YOLOv4是最近推出的基于深度学习的端到端实时目标检测方法。 </p> <p> YOLOv4的实现darknet是使用C语言开发的轻型开源深度学习框架,依赖少,可移植性好,可以作为很好的代码阅读案例,让我们深入探究其实现原理。 </p> <h3> <span style="color:#3598db;">课程内容与收获</span> </h3> <p> 本课程将解析YOLOv4的实现原理和源码,具体内容包括: </p> <p> - YOLOv4目标检测原理<br /> - 神经网络及darknet的C语言实现,尤其是反向传播的梯度求解和误差计算<br /> - 代码阅读工具及方法<br /> - 深度学习计算的利器:BLAS和GEMM<br /> - GPU的CUDA编程方法及在darknet的应用<br /> - YOLOv4的程序流程 </p> <p> - YOLOv4各层及关键技术的源码解析 </p> <p> 本课程将提供注释后的darknet的源码程序文件。 </p> <h3> <strong><span style="color:#3598db;">相关课程</span></strong> </h3> <p> 除本课程《YOLOv4目标检测:原理与源码解析》外,本人推出了有关YOLOv4目标检测的系列课程,包括: </p> <p> 《YOLOv4目标检测实战:训练自己的数据集》 </p> <p> 《YOLOv4-tiny目标检测实战:训练自己的数据集》 </p> <p> 《YOLOv4目标检测实战:人脸口罩佩戴检测》<br /> 《YOLOv4目标检测实战:国交通标志识别》 </p> <p> 建议先学习一门YOLOv4实战课程,对YOLOv4的使用方法了解以后再学习本课程。 </p> <h3> <span style="color:#3598db;">YOLOv4网络模型架构图</span> </h3> <p> 下图由白勇老师绘制 </p> <p> <img alt="" src="https://img-bss.csdnimg.cn/202006291526195469.jpg" /> </p> <p>   </p> <p> <img alt="" src="https://img-bss.csdnimg.cn/202007011518185782.jpg" /> </p>
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值