1.
[root@huahua ~]# vim /etc/ssh/sshd_config
[root@huahua ~]# systemctl restart sshd
2.通配符和正则的区别
作用支持命令
通配符方便我们找文件Linux大部分命令都可用
正则方便我们过滤文件(在文件中找内容)Linux三剑客 开发语言Phython Go PHP JAVA
3.正则表达式(Regular Expression RE)
发明1套符号,不同符号有不同含义,方便我们再文件中查找/过滤内容
(1)基础正则(Basic RE BRE)
^ :以什么开头
$ :以什么结尾
^$ :查找空行(这一行什么都没有)
.* :所有任意字符
. :任意一个字符
* :匹配前一个字符 只能放字符后面,不允许放前面 前一个字符连续出现0次或0次以上
[] :匹配里面任意一个字符(综括号)
[^] :不要里面的任意字符
\ :转义字符
[root@huahua ~]# cat /etc/ssh/sshd_config > /tmp/test.txt //把/etc/ssh/sshd_config的内容放在/tmp/test.txt里面
[root@huahua ~]# grep '^#' /tmp/test.txt //筛选出/tmp/test.txt下以#开头的文件
[root@huahua ~]# grep 'no$' /tmp/test.txt //筛选出/tmp/test.txt下以$结尾的文件
[root@huahua ~]# grep -n '^$' /tmp/test.txt //筛选/tmp/test.txt下的空格 -n显示行号
[root@huahua ~]# grep 'n*' /tmp/test.txt //匹配带n的字符
[root@huahua ~]# grep -nv "^$" oldboy.txt //-v排除空行 -n显示行号
[root@huahua ~]# grep " " oldboy.txt //过滤出空格 (空格看不出来,拉黑就看到红色的空格)
[root@huahua ~]# grep -o "......" oldboy.txt //一次查看六个字符 (6个.代表一次查看6个字符 -o是显示过程)
①撬棍系列
加撬棍,是转移字符,作用,脱掉马甲,打回原型
\n 回车(换行)
\t tab(空格)
[root@huahua ~]# grep ".$" oldboy.txt //以任意字符为结尾
[root@huahua ~]# grep "\.$" oldboy.txt //查看oldboy.txt中以.为结尾
②echo
-n 不输出每行结尾的回车
-e 让echo支持转义符 \n \t
[root@huahua ~]# echo -e "\nhuahua\txixi\zhizhi" //可以看到huahua换行了,huahua和xixi之间有空格
追加123之后查看,可以看到有4个字符,加上-n追加可以看到有3个字符
[root@huahua ~]# grep "0*" oldboy.txt //连续(重复)出现的0
[root@huahua ~]# grep '[a-z]' /tmp/test.txt //匹配字母a-z的
[root@huahua ~]# grep " [a-zA-Z] " oldboy.txt //匹配a-z A-Z
[root@huahua ~]# grep " [0-Z] " oldboy.txt //匹配0-9 a-z A-Z
[root@huahua ~]# grep " [a-Z] " oldboy.txt //匹配a-z A-Z
[root@huahua ~]# grep "[0-9]" /tmp/test.txt //匹配带数字的
[root@huahua ~]# grep '^[mno]' oldboy.txt //显示以m或n或o开头的行
[root@huahua ~]# grep '[mn.]$' oldboy.txt //以m或n或点结尾的行
[root@huahua ~]# grep '^[mno].* [mn.]$' oldboy.txt //显示以m或n或o开头的并且以m或n或点结尾的行
[root@huahua ~]# grep "[^abc]" oldboy.txt //不要abc
(2)扩展正则(Extended RE ERE)
| 或者
+ 匹配前一个字符出现一次和一次以上(>=1)
() 后向引用
{} 前一个字符出现最少n次,最多m次
b{m,n} 前1字符连续出现至少m次和最多n次
b{m}前一个字符连续出现m次
b{m,}前1个字符连续至少出现m次
b{,n}前一个字符最多出现n次
? 前一个字符出现0次或1次
[root@huahua ~]# egrep '[a-Z]+' oldboy.txt //匹配a-Z出现1次或1次以上
[root@huahua ~]# egrep 'oldboy|linux' oldboy.txt //查找'oldboy或linux
[root@huahua ~]# egrep 'oldb[oe]y ' oldboy.txt //查找oldboy或者oldbey
[root@huahua ~]# egrep 'oldb(o|e)y ' oldboy.txt //查找oldboy或者oldbey
[root@huahua ~]# egrep '0{1,3}' oldboy.txt //查找0至少出现1次,最多出现3次
出现的5个0是因为grep具有贪婪性
[root@huahua ~]# egrep '0{2,4}' oldboy.txt
[root@huahua ~]# egrep '0{3}' oldboy.txt
[root@huahua ~]# egrep '[0-9]{17}[0-9X]$' id.txt //查找身份证号
[root@huahua ~]# egrep 'go?d' oldboy.txt //查找god或者go (oldboy.txt内必须有god和go)
4.括号表达式
[[:alnum]]:大小写字母或数字(也就是0-9)
[root@huahua ~]# egrep [[:alnum:]] oldboy.txt
5.man grep info grep //info比慢更详细
6. Cat -A 文件中所有隐藏符号,每行结尾加上$
[root@huahua ~]# cat -A oldboy.txt
7.
基础正则扩展正则
grep sed awkegrep sed -r awk