awk正则表达式和内置函数的使用方法实例详解_linux shell

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<$1) print $0}' age=80 data.f和 awk ‘{age=49;if(age<$1) print $0}' data.f结果一样,前者将值传入awk,后者在awk中定义了一个变量。

时间: 2024-10-22 09:27:11

awk正则表达式和内置函数的使用方法实例详解_linux shell的相关文章

Oracle中REGEXP_SUBSTR及其它支持正则表达式的内置函数小结

Oracle中REGEXP_SUBSTR函数的使用说明: 题目如下:在oracle中,使用一条语句实现将'17,20,23'拆分成'17','20','23'的集合. REGEXP_SUBSTR函数格式如下:function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)__srcstr :需要进行正则处理的字符串__pattern :进行匹配的正则表达式,匹配的值将返回,返回策略由__occurrence决定__po

JavaScript学习小结之被嫌弃的eval函数和with语句实例详解_javascript技巧

前面的话 eval和with经常被嫌弃,好像它们的存在就是错误.在CSS中,表格被嫌弃,在网页中只是用表格来展示数据,而不是做布局,都可能被斥为不规范,矫枉过正.那关于eval和with到底是什么情况呢?本文将详细介绍eval()函数和with语句 eval 定义 eval()是一个全局函数,javascript通过eval()来解释运行由javascript源代码组成的字符串 var result = eval('3+2'); console.log(result,typeof result)

Oracle SQL 内置函数的使用方法及结果

SQL中的单记录函数 1.ASCII 返回与指定的字符对应的十进制数; SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual; A A ZERO SPACE --------- --------- --------- --------- 65 97 48 32 2.CHR 给出整数,返回对应的字符; SQL> select chr(54740) zhao,chr(65) chr65 fr

一天一个shell命令 linux文本内容操作系列-awk命令详解_linux shell

简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理. awk有3个不同版本: awk.nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本. awk其名称得自于它的创始人 Alfred Aho .Peter Weinberger 和 Brian Kernighan 姓氏的首个字母.实际上 AWK

linux awk时间计算脚本及awk命令详解_linux shell

在linux如果计划时间是个麻烦事, 用awk脚本如下 BEGIN {FS=":";OFS=":"} {total_seconds=total_seconds+$3} total_seconds>=60 {total_seconds=total_sconds-60 $2=$2+1 } {total_minutes=total_minutes+$2 $2=$2+1 } {total_minutes=total_minutes+$2} total_minutes&

Python中内置的日志模块logging用法详解_python

logging模块简介 Python的logging模块提供了通用的日志系统,可以方便第三方模块或者是应用使用.这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP GET/POST,SMTP,Socket等,甚至可以自己实现具体的日志记录方式. logging模块与log4j的机制是一样的,只是具体的实现细节不同.模块提供logger,handler,filter,formatter. logger:提供日志接口,供应用代码使用.logger最长用的操作有两类:配置和发

JavaScript函数内部属性和函数方法实例详解_javascript技巧

函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块. 函数是对象,有自己的属性和方法 .首先通过console下输出的函数属性方法来直观的看一下: 函数内部属性只要包括两个特殊的对象:arguments和this. 函数属性包括:length和prototype 函数方法(非继承)包括:apply()和call() 继承而来的函数方法:bind().toString().toLocaleString().valueOf() 其他的目前不熟,后面再补充 1. 函数内部属性 在函数内部,有两

python函数装饰器用法实例详解

  本文实例讲述了python函数装饰器用法.分享给大家供大家参考.具体如下: 装饰器经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等.装饰器是解决这类问题的绝佳设计, 有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用.概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能. ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #! coding=u

PHP函数引用返回的实例详解_php实例

引用返回 手册里是这么写的:引用返回用在当想用函数找到引用应该被绑定在哪一个变量上面时.不要用返回引用来增加性能,引擎足够聪明来自己进行优化.仅在有合理的技术原因时才返回引用!要返回引用 当你想将函数的返回引用绑定到某个变量时,PHP允许你这么做: function &returns_reference() { static $someref = 0; $someref++; return $someref; } $newref = &returns_reference();//引用返回,