15、正则表达式

1.特殊符号

  • 1.1特殊符号
符号含义
#注释,或者用户提示符 表示管理员
$获取变量内容 echo $PATH
” 单引号所见即所得,单引号里面的内容会原封不动输出
“”双引号对双引号里面的特殊符号会进行解析
“反引号优先执行,先执行反引号里面的命令.
  • 1.2重定向符号
重定向符号含义应用场景
>1>标准输出重定向:先清空文件,然后写入。大部分情况下先清空的时候可以使用。创建文件。
>>1>>标准输出追加重定向:直接写入到文件末尾。修改配置文件,表示追加的时候。
2>标准错误输出重定向:先清空文件,然后写入错误信息。获取错误输出的时候使用。
2>>标准错误追加输出重定向:直接把错误写入到文件末尾。获取错误输出的时候使用。
命令 >>haoshuaicong.log 2>&1无论对错都把结果写入到文件中。比较常用,定时任务,脚本中常用。
命令 &>>haoshuaicong.log无论对错都把结果写入到文件中。比较常用,定时任务,脚本中常用。
<0<标准输入重定向很少用,搭配某几个命令用xargs,tr
<<0<<标准输入追加重定向与cat搭配使用表示向文件写入多行内容
  • 1.3 通配符

正则与通配符的区别:通配符大部分命令都支持,正则只有三剑客和开发语言支持

诞生:用于给 Linux 中大部分命令使用,用于批量找文件名(找文件)。

符号含义
*星号所有,*.txt *.log '*ip*'
{}花括号输出序列
[]参考正则中含义即可。
?任意一个字符

2.基础正则 ^ $ . * .* [] [^]

2.1 ^ 以….开头的行

 #过滤出以I开头的行
 ​
 [root@haoshuaicong ~]# grep '^I' /haoshuaicong/re.txt
 I am haoshuaicong teacher!
 I teach linux.
 I like badminton ball ,billiard ball and chinese chess!

2.2 $ 以….结尾的行

 #过滤出以数字8结尾的行
 ​
 [root@haoshuaicong ~]# grep '8$' /haoshuaicong/re.txt
 my qq is 49000448
 ​
 # 注: 假如最后一个字符是空格,使用 cat -A 可以显示

2.3 ^$ 空行,这行中没有任何字符

 #过滤出文件中的空行并显示行号
 [root@haoshuaicong ~]# grep -n '^$' /haoshuaicong/re.txt
 2:
 6:
 10:
 ​
 #排除空行并显示行号,取反
 [root@haoshuaicong ~]# grep -nv '^$' /haoshuaicong/re.txt
 1:I am haoshuaicong teacher!
 3:I teach linux.
 4:I like badminton ball ,billiard ball and chinese chess!
 5:my blog is http: ˌ haoshuaicong.blog.51cto.com
 7:our size is http: ˌ blog.haoshuaicong.com
 8:my qq is 49000448
 9:not 4900000448.
 11:my god ,i am not oldbey,but haoshuaicong!
 ​
 #排除井号和空行
 grep -v '^$' /etc/profile | grep -v '^#'

2.4 . 任意一个字符

 #过滤出oldb.y的行,点表示任意的一个字符
 [root@haoshuaicong ~]# grep 'oldb.y' /haoshuaicong/re.txt
 I am haoshuaicong teacher!
 my blog is http: ˌ haoshuaicong.blog.51cto.com
 our size is http: ˌ blog.haoshuaicong.com
 my god ,i am not oldbey,but haoshuaicong!
 ​
 # 注: 过滤的时候会排除空行。点不会匹配空行。

2.5 \ 撬棍 转义字符 脱掉马甲打回原形,去掉特殊符号的含义

 #过滤出带.的行
 grep  '\.' /haoshuaicong/re.txt    

2.6 * 前一个字符连续出现0次或0次以上

贪婪性,只要连续就只匹配一次

2.7 .* 表示所有字符

 #所有内容都grep出来
 [root@haoshuaicong ~]# grep '.*' re.txt
 aaab
 aabaa
 acacacac
 ​
 #过滤出haoshuaicong
 [root@haoshuaicong ~]# grep 'ol.*oy' /haoshuaicong/re.txt
 I am haoshuaicong teacher!
 my blog is http: ˌ haoshuaicong.blog.51cto.com
 our size is http: ˌ blog.haoshuaicong.com
 my god ,i am not oldbey,but haoshuaicong!
 ​

正则表示连续出现的时候,表示所有的时候,体现出贪婪性

2.8 [ ] [abc] 表示匹配任意1个字符,a或b或c,中括号相当于一个字符

  • 中括号中除了^之外,其他符号没有任何含义,[^abc]表示除了abc
  • 中括号支持匹配序列,例如 [a-z] [a-Z] [0-9] [a-z0-9]
  • 他是一个一个字符匹配
  • 两个中括号,就是一次两个两个匹配,可以用18个中括号匹配身份证号

2.9正则符号总结

正则符号解释说明(以下字符说明仅在正则中适用)
^表示一什么什么开头
$表示以什么什么结尾
^$表示空行
.一个任意字符
*前一个字符出现0次或0次以上,8*匹配8
.*表示所有
[]相当于一个字符,[abc]相当于abc任意一个字符,一个中括号一个字符
\撬棍,打回原型,加上撬棍字符不表示任何含义

3.扩展正则 | + () {} ?

  • 扩展正则使用egrep或者grep -E 要不然不认识
  • sed要加上 -r 才能认识扩展正则
  • awk默认支持扩展正则

3.1 + 前一个字符连续出现1次或1次以上

  • +大部分与[]一起使用

取出0,取出连续出现的字母

取出连续出现的字母(单词)

3.2 | 表示或者,不表示管道

 #  过滤去haoshuaicong或者linux的行
 egrep 'haoshuaicong|linux' /haoshuaicong/re.txt
 ​
 # 过滤去ssh或者http或者smtp的行   三个
 egrep 'ssh|http|smtp' /etc/services
 ​
 # 排除/etc/ssh/sshd_config中的空行或注释,输出的时候显示行号
 egre -Vn '^$|^#' /etc/ssh/sshd_config

3.3 表示一个整体,通常与 | 或者符号一起使用,用于后向引用(反向引用sed)

  • 括号表示一个整体,若果有|他会校验两次,所以是o或者e都成立

3.4 {} a{n,m} 前一个字符连续出现至少n次,最多m次

格式应用
a{n,m} 前一个字符连续出现至少n次,最多m次表示连续出现的范围
a{n} 前一个字符连续出现n次匹配固定的次数
a{n,} 前一个字符连续出现至少n次
a{,m} 前一个字符连续出现,最多m次

使用{}匹配身份证号,表示0-9数字开头的17位 数字或者x结尾

0{17} 1{17} 2{17} ……..

3.5 ?前一个字符 出现0次或1次

  • 一个一个匹配 0次或1次

4.总结

1.特殊符号

符号含义
#注释,或者用户提示符 表示管理员
$获取变量内容 echo $PATH
” 单引号所见即所得,单引号里面的内容会原封不动输出
“”双引号对双引号里面的特殊符号会进行解析
“反引号优先执行,先执行反引号里面的命令.

2.重定向符号

重定向符号含义应用场景
>1>标准输出重定向:先清空文件,然后写入。大部分情况下先清空的时候可以使用。创建文件。
>>1>>标准输出追加重定向:直接写入到文件末尾。修改配置文件,表示追加的时候。
2>标准错误输出重定向:先清空文件,然后写入错误信息。获取错误输出的时候使用。
2>>标准错误追加输出重定向:直接把错误写入到文件末尾。获取错误输出的时候使用。
命令 >>haoshuaicong.log 2>&1无论对错都把结果写入到文件中。比较常用,定时任务,脚本中常用。
命令 &>>haoshuaicong.log无论对错都把结果写入到文件中。比较常用,定时任务,脚本中常用。
<0<标准输入重定向很少用,搭配某几个命令用xargs,tr
<<0<<标准输入追加重定向与cat搭配使用表示向文件写入多行内容
  1. 通配符

正则与通配符的区别:通配符大部分命令都支持,正则只有三剑客和开发语言支持

诞生:用于给 Linux 中大部分命令使用,用于批量找文件名(找文件)。

符号含义
*星号所有,*.txt *.log '*ip*'
{}花括号输出序列
[]参考正则中含义即可。
?任意一个字符

4.正则符号

正则符号解释说明(以下字符说明仅在正则中适用)
^表示一什么什么开头
$表示以什么什么结尾
^$表示空行
.一个任意字符
*前一个字符出现0次或0次以上,8*匹配8
.*表示所有
[]相当于一个字符,[abc]相当于abc任意一个字符,一个中括号一个字符
\撬棍,打回原型,加上撬棍字符不表示任何含义

5.拓展正则符号

扩展正则含义
+前一个字符连续出现1次或多次
|或者
()表示整体,后向引用或反向引用(sed)
{}a{n,m} 前一个字符连续出现至少n次,最多m次
?前一个字符出现0次或1次

6.perl正则

符号含义
\d[0-9]
\s匹配的空字符空格 tab 等等 [\t\r\n\f]
\w[0-9a-zA-Z_]
\D[^0-9] 排除数字
\S非空字符
\W排除数字, 大小写字母和 _

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇