linux系统——shell编程文本处理三剑客之正则表达式

linux系统——shell编程文本处理三剑客之正则表达式

  • awk —— 切片
  • sed —— 更改
  • grep —— 筛选

同时正则表达式作为辅助工具

- 正则表达式

正则示例:

#!/bin/bash
read -p "几个? " aaa
if [[ !  $aaa =~ ^[0-9]+$ ]]		\\判断运用正则表达式,判断输入的是否为0-9开头 +一个到多个
then
echo cuowu
exit 90
else
for i in `seq   $aaa`
do
useradd user$i
done
fi

执行结果:

[root@slave2 ~]# bash zheng1.sh 
几个? 2
useradd: user 'user1' already exists
useradd: user 'user2' already exists

- 定义:

元字符是这样一类字符,它们表达的是不同于字面本身的含义

  • 基本正则表达式元字符
  • 扩展正则表达式元字符

- 基本正则表达式元字符:

^ —— 行首定位符 —— ^接什么表示以什么开头:

[root@slave2 ~]# cat 2.txt 
love you
iove
i love you
1oveyou
[root@slave2 ~]# grep "^l" 2.txt 
love you

$ —— 行尾定位符 —— 什么接$表示以什么结尾:

[root@slave2 ~]# cat 2.txt 
love you
iove
i love you
1oveyou
[root@slave2 ~]# grep "you$" 2.txt 
love you
i love you
1oveyou

. —— 任意一个字符:

[root@slave2 ~]# cat 3.txt 
a
ab
abc
abcd
abcde
abcdef
[root@slave2 ~]# grep "a.c" 3.txt 
abc
abcd
abcde
abcdef

* —— 匹配前导符0-多次 —— *前一个字符有0-多个:

[root@slave2 ~]# cat 3.txt 
a
ab
abc
abcd
abcde
abcdef
[root@slave2 ~]# grep "abc" 3.txt 
abc
abcd
abcde
abcdef
[root@slave2 ~]# grep "abc*" 3.txt 
ab
abc
abcd
abcde
abcdef
这里插入代码片

.* —— 匹配任意多个字符 —— . 和* 的组合:

[root@slave2 ~]# cat 3.txt 
a
ab
abc
abcd
abcde
abcdef
[root@slave2 ~]# grep ".*" 3.txt 
a
ab
abc
abcd
abcde
abcdef

[ ] —— 匹配范围内任一字符:

[root@slave2 ~]# cat 3.txt 
a
ab
abc
abcd
abcde
abcdef
[root@slave2 ~]# grep "[ef]" 3.txt 
abcde
abcdef

[ - ] —— 匹配范围内任一字符,范围连续:

[root@slave2 ~]# cat 3.txt 
a
ab
abc
abcd
abcde
abcdef
[root@slave2 ~]# grep "[d-f]" 3.txt 
abcd
abcde
abcdef

[ ^ ] —— 匹配不在指定组内的字符 —— 取反:

[root@slave2 ~]# cat 3.txt 
a
ab
abc
abcd
abcde
abcdef
[root@slave2 ~]# grep "[d-f]" 3.txt 
abcd
abcde
abcdef
[root@slave2 ~]# grep "[^d-f]" 3.txt 
a
ab
abc
abcd
abcde
abcdef

\ —— 脱意符:

[root@slave2 ~]# grep "l.ve" 2.txt
love you
i love you
l.ve
[root@slave2 ~]# grep "l\.ve" 2.txt 
l.ve

\< —— 词首定位符:

[root@slave2 ~]# cat 2.txt 
love you
iove
i love you
1oveyou
l.ve
[root@slave2 ~]# grep "\<lo" 2.txt 
love you
i love you
[root@slave2 ~]# grep "^lo" 2.txt 
love you

\> —— 词尾定位符:

[root@slave2 ~]# cat 2.txt 
love you
iove
i love you
1oveyou
l.ve
[root@slave2 ~]# grep "\>ve" 2.txt 
[root@slave2 ~]# grep "ve$" 2.txt 
iove
l.ve
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Shell编程中的正则表达式是一种用于匹配和操作字符串的强大工具。它使用特定的语法规则来描述和匹配符合某个模式的字符串。在Shell编程中,常用的工具如grep、sed和awk都支持使用正则表达式进行模式匹配和文本处理正则表达式由普通字符和特殊字符(元字符)组成。普通字符指的是任意字母、数字或其他字符,而元字符具有特殊的意义和功能,用于表示模式中的特定字符或符号。通过使用正则表达式,可以实现字符串的匹配、替换、提取等操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Shell编程正则表达式](https://blog.csdn.net/weixin_51099370/article/details/124568808)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Linux操作系统——Shell编程 正则表达式](https://blog.csdn.net/weixin_46411355/article/details/125628828)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值