热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

awk内嵌正则提取字符串_awk正则表达式和内置函数的使用方法实例详解

awk正则表达式及内置函数实例详解:1、模糊匹配:awk‘{if($3~97)print$0}data.f:如果第三项中含有”97”则打印

awk正则表达式及内置函数实例详解:

1、模糊匹配:

awk ‘{if($3~/97/) print $0}' data.f:如果第三项中含有”97”则打印该行

awk ‘{if($4!~/ufcx/) print $0}' data.f:如果第三项中不含ufcx有则打印

2、精确匹配:

awk ‘{if($5==66) print $0}' data.f:如果第五项是66则打印

awk ‘{if($5!=66)print $0}' data.f : 如果第五项不是66则打印

awk ‘{if($1>$5) print $0}' data.f:如果第一项大于第五项则打印

3、大小写匹配:

awk ‘{if(/[Ss]ept/) print $0}' data.f:符合,则打印一行。

awk ‘/[Ss]ept/ {print $2}' data.f:符合,则打印第二字段

4、任意匹配:

awk ‘{if($2 ~/^.e/) print $0}' data.f:第二字段中,第二个字符为e,输出

awk ‘{if($4 ~/(lps|fcx)/) print $0}' data.f:第四个字段含有lps或fcx则输出

5、&&,||:

awk ‘{if($3 ~/1993/ && $2==”sept”) print $0}' data.f:两边都真则输出

awk ‘{if($3 ~/a9/ || $2==”sept”) print $0}' data.f:一边为真则输出

6、变量定义:

awk ‘{date=$2;price=$5; if(date ~/[Ss]ept/) print “price is ” price}' data.f:变量定义,满足date是sept或者Sept的将price输出。

7、修改数值(源文件数值不变)

awk ‘{BASELINE=42; if($1>BASELINE) $5=$5+100; print $0}' data.f:三行程序,以“;”分割

如果修改的是文本域,就要添加“”””。例如:awk ‘{if($2==”may”) $2=”tt”; print $0}' data.f

上边都是显示所有数据,awk ‘{if($2==”may”) {$2=”tt”; print $0}}' data.f这个只显示修改数据,仔细看看,其实语法和c一样,只是最外边添加了一个{}符号。

8、创建新域:(源文件数值不变)

awk ‘{if($5>$1){$8=$5-$1;print $1,$8}}' data.f:

或者awk ‘{if($5>$1){diff=$5-$1;print $1,diff}}' data.f

9、数据统计:

awk ‘{(total+=$5)}END{print total}' data.f:“{(total+=$5)}”和“{print total}”代表两个不同的代码段,如果没有END每次的累积结果都会输出,END可以理解为代码段落的标志,这样只输出最终结果即{print total}只执行一次。

10、统计文件大小:

ls –l | awk ‘{if(/^[^d]/) total=+$5}END{print “total KB:” total}':/^[^d]/行首匹配可以不写域值$1

11、Awk内置变量:

ARGC 命令行参数个数

ARGV 命令行参数排列

ENVIRON 支持队列中系统环境变量的使用

FILENAME awk浏览的文件名

FNR 浏览文件的记录数

FS 设置输入域分隔符,等价于命令行- F选项

NF 浏览记录的域个数

NR 已读的记录数

OFS 输出域分隔符

ORS 输出记录分隔符

RS 控制记录分隔符

12、awk内置字符串处理函数

gsub ( r, s )在整个$0中用s替代r

gsub ( r, s , t )在整个t中用s替代r

index ( s , t )返回s中字符串t的第一位置

length ( s )返回s长度

match ( s , r )测试s是否包含匹配r的字符串,返回位置

split ( s , a , fs )在fs上将s分成序列a

sprint ( f m t , exp )返回经f m t格式化后的exp

sub ( r, s ,$0) $0中s替换第一次r出现的位置

substr ( s , p )返回字符串s中从p开始的后缀部分

substr ( s , p , n )返回字符串s中从p开始长度为n的后缀部分

13、awk ‘gsub(/6\./,78) {print $0}' data.f:将所有“6.”换成78,并输出

awk ‘{if($2==”Sept”) {sub(/3/,”9″,$0); print $0}}' data.f:只替换第一个出现的

awk ‘BEGIN{print index(“hello”,”lo”)}':输出的值为4

awk ‘{if($3==”3BC1997″) print length($3) ” ” $3}' data.f

awk ‘BEGIN{print match(“ABCD”,”B”)}':输出2

awk ‘BEGIN{print match(“ABCD”,/B/)}':“//”和“”””效果一样

awk ‘BEGIN {print split(“123#234#654″, myarray, “#”)}':返回数组元素个数,123#234#654是字符串,以“#”为分隔符,将字符串放入数组。

awk ‘{if($1==34) print substr($3,2,7)}' data.f

awk ‘BEGIN{print substr(“helloleeboy”,2,7)}':输出ellole

awk ‘BEGIN{print substr(“helloleeboy”,2,7)}' data.f:输出n遍ellole,n为data.f的行数

14、awk ‘BEGIN{print”May\tDay\n\nMay \104\141\171″}':\104\141\171表示Day。\t:tab键,\n:换行,\ddd:八进制

15、echo “65” | awk ‘{printf “%c\n”,$0}':printf函数,和c差不多,输出为A。(ASCII码)

echo “65” | awk ‘{printf “%d\n”,$0}':输出65数字。

awk ‘{printf “%-15s %s\n”,$2,$3}' data.f:“%-15s”左对齐15个字符长度

awk ‘{if(age



推荐阅读
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 本文介绍了在处理不规则数据时如何使用Python自动提取文本中的时间日期,包括使用dateutil.parser模块统一日期字符串格式和使用datefinder模块提取日期。同时,还介绍了一段使用正则表达式的代码,可以支持中文日期和一些特殊的时间识别,例如'2012年12月12日'、'3小时前'、'在2012/12/13哈哈'等。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 本文详细介绍了Python中正则表达式和re模块的使用方法。首先解释了转义符的作用,以及如何在字符串中包含特殊字符。然后介绍了re模块的功能和常用方法。通过学习本文,读者可以掌握正则表达式的基本概念和使用技巧,进一步提高Python编程能力。 ... [详细]
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • 正则表达式及其范例
    为什么80%的码农都做不了架构师?一、前言部分控制台输入的字符串,编译成java字符串之后才送进内存,比如控制台打\, ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • HashMap的扩容知识详解
    本文详细介绍了HashMap的扩容知识,包括扩容的概述、扩容条件以及1.7版本中的扩容方法。通过学习本文,读者可以全面了解HashMap的扩容机制,提升对HashMap的理解和应用能力。 ... [详细]
author-avatar
窝窝笑丫
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有