一:知识背景
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,其他无法匹配