shell脚本正则表达式

正则表达式概述

正则表达式:是由一系列字符和元字符构成的字符串,简称RE(Regular Expression),它的主要功能是文本查询和字符串操作,它可以匹配文本的一个字符或字符集合。

实际上,正则表达式完成了数据的过滤,将不符合正则表达的数据拒绝,留下符合的。

元字符:描述字符的字符,它用于对字符表达式的内容、转换及各种操
作信息描述

基本正则表达式元字符集合及其意义

正则中的特殊符号

扩展正则


“?”符号
注:根据测试可以不包括前面的字符,即匹配0次
"()"符号和“|”符号
"()"符号和“|”符号通常结合使用,表示一组可选字符
的集合。
re(a|b|c)d 等价于 re[abc]d
"|"符号也可以表示多个正则表达式的“或”关系
grep -E “zha?ng|zhi”(|的两边作为一个整体)

Bash shell本身不支持正则表达式,使用正则表达式的是shell命令和工具,如grep,sed,awk等。

grep与正则表达式

grep (global search regular expression(RE) and print out the line,
全面 搜索正则表达式并把行打印出来) 是一种强大的文本搜索工具, 它
能 使用正则表达式搜索文本,并把匹配的行打印出来
[root@www ~]# grep [-acinv] [--color=auto] ' 搜寻字符串' filename
选项与参数:
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
--color=auto :可以将找到的关键词部分加上颜色的显示喔!

Sed与正则表达式

sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。
sed主要用来自动编辑一个或多个文件;
简化对文件的反复操作;
编写转换程序等。
文件内容并没有改变,除非你使用重定向存储输出

常用选项:


-n∶使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN的
内容一般都会被列出到屏幕上。但如果加上 -n 参数后,则只有经过sed 特
殊处理的那一行(或者动作)才会被列出来。
-f∶直接将 sed 的动作写在一个档案内, -f filename 则可以执行
filename 内的sed 动作;
-r∶sed 的动作支持的是延伸型正规表示法的语法。(预设是基础正规表
示法语法)
-i∶直接修改读取的档案内容,而不是由屏幕输出。

常用命令
a:新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下
一行)
c:取代, c 的后面可以接字串,这些字串可以取代n1,n2 之间的行
d:删除,d 后面通常不接任何内容
i:插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一
行)
p:列印,即将某个选择的内容打印出来。通常 p 会与参数 sed -n 一起运

s:替换,可以直接进行替换的工作,通常这个 s 的动作可以搭配正规表示
法,例如 1,20s/old/new/g 就是啦

awk与正则表达式

相较于sed 常常作用于一整个行的处理,awk 则比较倾向于一行当中分成数个『字段』来处理。 因此,awk 相当的适合处理小型的数据数据处理。

第一步:执行BEGIN{ commands }语句块中的语句;
第二步:从文件或标准输入(stdin)读取一行,然后执行pattern{ commands}语句块,它逐行扫描文件,从第一行到最后一行重复这个过程,直到文件全部被读取完毕。
第三步:当读至输入流末尾时,执行END{ commands }语句块。

数组应用

数组是awk的灵魂,处理文本中最不能少的就是它的数组处理。因为数组索引(下标)可以是数字和字符串在awk中数组叫做关联数组(associativearrays)。awk 中的数组不必提前声明,也不必声明大小。数组元素用0或空字符串来初始化,这根据上下文而定。

 

dd

可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。

if=文件名:输入文件名,缺省为标准输入。即指定源文件

of=文件名:输出文件名,缺省为标准输出。即指定目的文件。

bs=bytes:同时设置读入/输出的块大小为bytes个字节。

count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数

split

-b:指定分割后的每个文件的大小

-d:使用数字作为后缀

-a length:制定后缀的长度

-l num:按照行进行分割

PREFIX:指定分割后的文件的前缀,写在所有选项的最后

贪婪模式、非贪婪模式

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值