linux shell脚本-(正则表达式,awk,sed)(5)

目录

1.正则表达式

1.1元字符(字符匹配)

1.2表示次数

1.3位置锚定

1.4分组或其他

2.AWK(语言)

2.1基础用法

2.2awk常见的内置变量

2.3模式PATTERN

2.3.1模式为空

2.3.2正则匹配

2.3.3 line ranges:行范围

2.3.4BEGIN END

3.sed

3.1基本用法

3.2 sed 脚本格式

3.3 sed搜索替代

3.4 sed 分组后项引用


1.正则表达式

主要用来匹配字符串(命令结果,文本内容)

与通配符不同,通配符功能是用来处理文件名,而正则表达式是处理文本内容中字符

1.1元字符(字符匹配)

不表示本来的含义,在正则表达式中有特殊含义的字符

.  :任意单个字符

[  ] :指定范围内的任意单个字符,示例:[zhou]   [0-9]

[:alnum:]:字母和数字

[:alpha:]:任意英文大小写字符,即a-z,A-Z

[:lower:]:小写字母

[:upper:]:大写字母

[:space:]:包括所有空格

1.2表示次数

* :代表前面的字符出现,0到正无穷次

. * :代表任意长度字符

\?:0或1次,可有可无

\+ :1次到正无穷次

\{n\}:前面的字符出现n次

\{n,m\}:前面的字符出现n-m次

\{n,\}:前面的字符最少出现n次

\{,n\}:前面的字符最多出现n次

举例:

1.3位置锚定

^ :开头

$ :结尾

\b , \< :字符串的开头

\b , \> :字符串的结尾

1.4分组或其他

分组:( ) 将多个字符捆绑在一起,当作一个整体处理

2.AWK(语言)

在 Linux/UNIX 系统中,awk 是一个功能强大的编辑工具,逐行读取输入文本,默认以空格或tab键作为分隔符作为分隔,并按模式或者条件执行编辑命令。

awk(语言):读取一行处理一行

vim:把整个文件加载到内存中处理,受内存的限制

工作原理:

awk 比较倾向于将一行分成多个“字段”然后再进行处理,且默认情况下字段的分隔符为空格或 tab 键。awk 执行结果可以通过 print 的功能将字段数据打印显示。

格式:

awk  [选项]  '表达式{处理动作}'

选项:

-F:指定分隔符

-V:指定变量

2.1基础用法

print动作

2.2awk常见的内置变量

NF:当前处理的行的字段个数

NR:当前处理的行的行号(序数)

$0:当前处理的行的整行内容

$n:当前处理行的第n个字段(第n列)

2.3模式PATTERN

awk '模式{处理动作}'

PATTERN:根据pattern条件,过滤匹配的行,再做处理

2.3.1模式为空

如果模式为空表示每一行都匹配成功,相当于没有额外条件

2.3.2正则匹配

/regular expression/:仅处理能够模式匹配到的行,需要用/ /括起来

2.3.3 line ranges:行范围

不支持使用行号,但是可以使用变量NR 间接指定行号加上比较操作符 或者逻辑关系

比较操作符:
==, !=, >, >=, <, <=
#####逻辑
与:&&,并且关系
或:||,或者关系
非:!,取反

/pat1/,/pat2/

pat代表正则,pat1到pat2  表示从正则1到正则2

2.3.4BEGIN END

BEGIN{}:仅在开始处理文件中的文本之前执行一次

END{}:仅在文本处理完成之后执行一次

3.sed

sed 是行编辑器,从文件或管道中读取一行,处理一行

3.1基本用法

sed + 选项 + '语法' + 标准输入输出

sed自带打印功能

sed常用选项:

-n:关闭自动打印

-r:使用扩展正则表达式

-i:实际修改文件内容

-i.bak:实际修改先备份源文件在修改文件内容

3.2 sed 脚本格式

写在  '  ' 单引号中

格式:'地址+命令'组成

选项:

-p:打印

$:最后一行

q:提前退出

d:删除

a:在某行后面添加

i:在某行上面添加

c:替换某行

=:显示行号

面试题:显示几点到几点分的日志

如:显示14:20分到14:40分的日志

3.3 sed搜索替代

格式:s / 替换的字符  /  原来的字符 / 修饰符

替换修饰符:
g 行内全局替换
p 显示替换成功的行

3.4 sed 分组后项引用

格式为:sed -nr  's/ (  ) / \1 / p'

分组 s//代表查找替换  ()代表分组    \1 代表留下的组

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值