shell学习笔记之正则表达式

一:知识背景

  sed -i ' /PermitRootLogin no/ s/^.*$/PermitRootLogin yes/g' /etc/ssh/sshd_config

  正则表达式的作用实在太强大了!!!!

  linux三剑客grep、awk、sed的强大是和正则分不开的,正则说到最基本的就是:从文件或者命令输出过滤文本。正则就是一些特殊字符串的集合

二:语法

 .:匹配单字符ASCII码,可以是字母也可以是数字

  ..ab..,可以匹配 dead12、Adab69,.w..w..w.. 可以匹配dwrx..x..x

^: 允许在第一行开始匹配字符

 ^.01,匹配a01、001sdsadddsa等、^d匹配 d rwxrwxrwx

$:在行尾匹配字符串

  $ 放在单词后面,test$匹配所有以test结尾的行

  ^$匹配所有空行

* :使用*匹配 *号之前的单字符串的零个或者多个(区别于通配符中的*,通配符*是匹配所有字符串)(正则中如果想匹配到所有字符可以使用 .*)

  test* 可以匹配 test、testt、testtttttt2Adsw6

\ :匹配一个特殊字符的含义

  假设匹配字符串中的".",但是"."在正则中表示匹配单个字符,所以进行匹配达到效果

  匹配“*.properties”结尾所有文件就使用\*\.propeerties,要不然就匹配到错误的结果

[] :匹配一个范围或集合

  【0-9】:匹配0-9任意一个数字

  【A-Za-z】:表示大小写字母任意一个

  【ou】.*t就可以匹配到bought socket  也就是匹配o或者u开头,后面紧跟一个或多个任意字符并以t结尾的单词

  【a-zA-z】*就是匹配所有单词

  若[]中添加^表示不匹配,[^0-9]就是不匹配任一非数字字符

\{\}:匹配模式结果出现的次数

  

  A\{2\}B:匹配出来就是AAB

  A\{2,\}B:匹配就是AAB AAAB AAAAAB等等,无法匹配AB

 A\{3.5}:匹配就是AAAB AAAAB AAAAAB,其他无法匹配

  

  

posted @ 2019-01-06 17:25  TrumanShow  阅读(191)  评论(0编辑  收藏  举报