shell-正则表达式

正则表达式:使用单个字符串来描述或匹配一系列符号某句法规则的字符串。
常用的工具:grep、sed、awk。

基础元字符介绍:

元字符作用
*前一个字符匹配0次或任意多次
.匹配除了换行符外的任意一个字符
^匹配行首。例如,^hello 会匹配以 hello 开头的行
$匹配行尾。例如,hello& 会匹配以 hello 结尾的行
[]匹配括号中指定的任意一个字符,而且只匹配一个字符。例如.[aoeiu]匹配任意一个元音字母, [0-9] 匹配任意一位数字,[a-z][0-9] 匹配由小写字母和一位数字构成的两位字符
[^]匹配除中括号中的字符以外的任意一个字符。例如,[^0-9] 匹配任意一位非数字字符,[^a-z] 匹配任意一位非小写字母
\转义符,用于取消特殊符号的含义
\{n\}表示其前面的字符恰好出现 n 次。例如,[0-9]\{4\} 匹配4位数字,[1][3-8][0-9]\{9\} 匹配手机号码
\(n,\}表示其前面的字符出现不少于 n 次。例如,[0-9]\{2,\} 匹配两位及以上的数字
\{n,m\}表示其前面的字符至少出现 n 次,最多出现 m 次。例如,[a-z]\{6,8\} 匹配 6〜8 位的小写字母

一、grep的使用

-c:打印符合要求的行数
-i:忽略大小写
-n:输出符合要求的行及其行号
-v:打印不符合要求的行
-A:-A2 打印符合要求的行以及下面两行
-B:-B2 打印符合要求的行以及上面两行
-C:-C2打印符合要求的行以及上下各两行

grep "a*" /etc/passwd            #匹配零个或多个a

在这里插入图片描述

grep "aa*" /etc/passwd             #过滤出至少包含一个a的行
grep "aaa*" /etc/passwd           #过滤出至少包含2个连续a的行
grep "aaaa*" /etc/passwd          #过滤出至少包含3个连续a的行

在这里插入图片描述

grep "^g" /etc/passwd      #过滤出以小写字母g开头的行

在这里插入图片描述

grep "t$" /etc/passwd      #匹配以小写t结尾的行

在这里插入图片描述

grep "^$" /tmp/test.txt      #匹配空行

在这里插入图片描述

grep -nv "nologin" /etc/passwd    #过滤出不带某关键词的行,并输出行号

在这里插入图片描述

grep -n "[0-9]" /tmp/test.txt   #匹配包含数字的行

在这里插入图片描述

grep -nv "[0-9]" /tmp/test.txt   #匹配不包含数字的行

在这里插入图片描述

二、sed的使用

sed -n ''p filename        #打印某行

在这里插入图片描述

sed -n '//'p filename    #打印包含某字符的行,类似grep

在这里插入图片描述

sed 'n'd filename  #打印时删除某行

在这里插入图片描述
在这里插入图片描述

sed 's///g' filename  #替换字符或者字符串

在这里插入图片描述
在这里插入图片描述

sed -i 's///g' filename  #修改文件内容

在这里插入图片描述

三、awk的使用

-F:指定分隔符;不加-F ,默认空格或tab为分隔符,分隔符要使用单引号引住。
print:表示打印的动作,用来打印某段
$NF: 最后一段的值

截取文档中某段

在这里插入图片描述

在这里插入图片描述

使用逻辑符号判断。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

awk的内置变量:

ARGC 命令行参数个数

ARGV 命令行参数排列

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

FILENAME awk浏览的文件名

FNR 浏览文件的记录数

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

NF 浏览记录的域个数

NR 已读的记录数

OFS 输出域分隔符

ORS 输出记录分隔符

RS 控制记录分隔符
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值