即整行中查找匹配 或指定某个字段   ‘ ~ /REG/{action}’ 不匹配使用  !~ 或者 ~! 二、条件判断语句中使用正则: 和上面类似,比如 if( " /> 即整行中查找匹配 或指定某个字段   ‘ ~ /REG/{action}’ 不匹配使用  !~ 或者 ~! 二、条件判断语句中使用正则: 和上面类似,比如 if( "> 如何使用 awk 和正则表达式过滤文本或文件中的字符串_教程_内存溢出

阅读 13

如何使用 awk 和正则表达式过滤文本或文件中的字符串,第1张

一、语句块外面使用: ‘/REG/{action}’ 只写正则

默认在$0即整行中查找匹配 或指定某个字段

  ‘$1 ~ /REG/{action}’

不匹配使用  !~ 或者 ~!

二、条件判断语句中使用正则:

和上面类似,比如

if( 变量 ~ /正则/){print "ok"}

三、函数中使用正则:

gsub( Ere, Repl, [ In ] )

sub( Ere, Repl, [ In ] )

match( String, Ere )

split( String, A, [Ere] )

awk 'pattern {action}' file

awk:指令名称

pattern:过滤器

action:动作

pattern是过滤器,在逐行处理的过程中,可以使用过滤器过滤掉不需要的行,或者过滤出需要的行。而过滤器可以有以下几种方式:

使用正则表达式来过滤,将要过滤的内容放在 / /中。

比如,过滤包含hello行:

==(相等)、 ~ (包含)、! ~ (不包含)、&&(且)、||(或)

示例:

test.txt内容如下:

过滤第一个字段等于“hello”的行

过滤出第一个字段包含“hello”的行

过滤出第一个字段不包含“hello”的行

过滤出包含“hello”且包含“world”的行

过滤出包含“hello”或者包含“meituan”的行

由两个pattern组成,begpat和endpat,中间使用逗号(,)分割,begpat表示匹配的开始位置,endpat表示匹配的结束位置

示例

test1.txt内容如下:

过滤出第一个字段是“hello” 到 “baidu”的行

使用语法是 awk 'BEGIN{}{}END{action}',指定 initialization 和 cleanup 规则。

示例

test2.txt内容如下:

求最大值

类似2.4,只不过是规则更复杂

匹配所有行,不过滤任何内容

test.txt内容如下:

打印test.txt的内容

FS:分隔符,默认空格

NR:当前行

NF:当前记录字段个数

$0:当前记录

$0 ~ n:当前记录中的第n个字段

示例

test3.txt内容:

打印每行每个字段用#连接起来

打印第2 ~ 第5行的内容

打印第2 ~ 第5行的内容最后一个字段

gsub(s,r): 在$0中,使用r代替s

index(s,t): 返回s中t的第一个位置

length(s) :s的长度

match(s,r) :s是否匹配r

substr(s,p) :返回s中从p开始的子串

https://www.gnu.org/software/gawk/manual/html_node/Patterns-and-Actions.html#Patterns-and-Actions

grep -vE "[0-9]{1,2}(\:[0-9]{1,2}){2}" file

用正则把直接取时间固定格式 xx:xx:xx 时分秒 ,然后grep -E正则扩展,-v反匹配,这两个参数合起来用,就过滤到时间所在的行了,不能象他们那样过虑特定字符,万一字符变了呢?只有时间固定格式全球统一,绝不会变!

正则的含义:[0-9]的数字 {1,2}出现一到两次 (\:转译冒号[0-9]{1,2}即[0-9]的数字出现一到两次)然后小括号里的出现2次,这样就组合成了任意 小时,分钟和秒了。

给分吧~~

[yuechengjun@localhost ~]$ grep -vE "[0-9]{1,2}(\:[0-9]{1,2}){2}" aaa

具体的源文件如下:

总和

为: 133

组播为: 131

点播为: 1

总和为: 136

组播为: 128

点播为: 5

总和为: 130

组播为: 123

点播为: 4

总和为: 126

组播为: 124

点播为: 2

总和为: 127

组播为: 123

点播为: 1

总和为: 133

组播为: 124

点播为: 3

总和为: 131

组播为: 123

点播为: 4

总和为: 127

组播为: 122


点播为: 3

欢迎分享,转载请注明来源:

内存溢出

原文地址:

http://outofmemory.cn/tougao/12073668.html
组播
(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
rb rb 一级用户组
如何删除电脑里的顽固文件夹?
上一篇
2023-05-20
win7系统声音怎么改成女声
2023-05-20

发表评论
请登录后评论... 登录
提交

    评论列表(0条)
保存
{label} {label} 即整行中查找匹配或指定某个字段   ‘ ~ REG{action}’不匹配使用  !~ 或者 ~!二、条件判断语句中使用正则:和上面类似,比如if( ', author : 'rb', cat_name : '教程', time_y_m : '2023年05月', time_d : '20', site_motto : '内存溢出' }; {script} {script}