正则表达式
第1章 企业案例故障
实例1-1???????????? 磁盘空间不足系列: 原因????????????????????????? 排查过程???????????????????????? ??? 解决 1.block????????????????? df -h; du -sh /data/* 具体的文件或目录??? 确认之后删除????? 2.block??????????? ???? lsof|grep delete??????????????? ?????????? 重启对应的服务 3.inode???????????????? df -i; 找出系统中大于1M的目录????????? ??? 删除大量小文件 第2章 特殊符号2.1 引号系列2.1.1 “”????????? 双引号引号内的特殊符号会被解析 2.1.2 ?‘’????????? 单引号所见即所得,输入什么就输出什么 2.1.3 ``??????????? 反引号$()==`` 2.1.4 ???????????? 无引号可以使用{} 2.2 重定向系列>标准输出重定向先把文件清空追加 >>标准输出追加重定向 2> 标准错误输出重定向 2>> <标准输入重定向 xargs tr <<标准输入追加重定向与cat配合追加多行内容 2>&1将错误和正确内容都记录到文件中 2.3 位置系列~????????? 当前用户家目录 ..????????? 上一级目录 .?????????? 当前目录 -????????? ???参数? cd – su –? 2.4 判断关系&& ??? 前面命令执行成功之后在执行后一个命令 ||?????????? 前一个命令执行失败之后执行后一个命令 [[email?protected] ~]# ls /oldboy && echo 目录已存在 ext???? nginx.conf? oldboy.SH?? oldboy.txt-hard? oldboy.txt-soft2? test.sh? t.sh.bak? xiaodong? xingfujie jeacen? oldboy????? oldboy.txt? oldboy.txt-soft? test????????????? t.sh???? wodi.gz?? xiaofan?? yingsui.gz 目录已存在 [[email?protected] ~]# ls /ooooo && echo 目录已存在 ls: cannot access /ooooo: No such file or directory ?[[email?protected] ~]# ls /ooooo || echo 目录不存在 ls: cannot access /ooooo: No such file or directory 目录不存在 2.5 无分类系列#????????? 注释说明 显示环静变量的配置文件 root用户的命令提示符 $????????? 普通用户命令提示符????? awk取列 !??????? !ls运行上一个以ls开头的命令并执行 !!运行上一个命令 |?????????? 管道符号 ;?????????? 在同一行分割命令 2.6 通配符号2.6.1 * 所有文件1.以.conf结尾的文件 find /?? -type f -name "*.conf" 2.找出系统中文件名包含ifconfig (文件名中有ifconfig就行) 方法一: [[email?protected] ~]# find /? -type f? -name "ifconfig" /sbin/ifconfig [[email?protected] ~]# [[email?protected] ~]# find /? -type f? -name "*ifconfig*" /usr/sbin/pifconfig /usr/share/man/de/man8/ifconfig.8.gz /usr/share/man/pt/man8/ifconfig.8.gz /usr/share/man/man8/pifconfig.8.gz /usr/share/man/man8/ifconfig.8.gz /usr/share/man/fr/man8/ifconfig.8.gz /sbin/ifconfig 方法二: [[email?protected] ~]# find /? -type f? |grep ifconfig /usr/sbin/pifconfig /usr/share/man/de/man8/ifconfig.8.gz /usr/share/man/pt/man8/ifconfig.8.gz /usr/share/man/man8/pifconfig.8.gz /usr/share/man/man8/ifconfig.8.gz /usr/share/man/fr/man8/ifconfig.8.gz /sbin/ifconfig 2.6.2 {}?????????? 生成序列 备份{} 生成序列 [[email?protected] ~]# echo stu{01..5} stu01 stu02 stu03 stu04 stu05 [[email?protected] ~]# [[email?protected] ~]# [[email?protected] ~]# echo {1,5,100} ? [[email?protected] ~]# echo stu{01..10} stu01 stu02 stu03 stu04 stu05 stu06 stu07 stu08 stu09 stu10 [[email?protected] ~]# echo stu{01..10..2} stu01 stu03 stu05 stu07 stu09 通过 {} 进行备份 [[email?protected] ~]# cp? oldboy.txt{,.bak} [[email?protected] ~]# echo oldboy.txt{,.bak} oldboy.txt oldboy.txt.bak 第3章 基础正则表达式3.1 符号比较中文 ‘’ ????? “” ??? () ??? 。?? ?* ?…… ??? ¥ ?| ??? {}? 【】 英文??? '' ?????????? ""? ?????? () ????????? . ??? ?* ?^?? ????? $???? ?|? {}? [] 为grep配置别名 alias grep='grep --color' alias egrep='egrep --color' 3.2 第1个符号?? ^? 以....开头的行模拟文件 [[email?protected] /oldboy]# cat oldboy.txt I am oldboy teacher! I teach linux. ? I like badminton ball,billiard ball and chinese chess! my blog is http://oldboy.blog.51cto.com our size is http://blog.oldboyedu.com my qq is 49000448 ? not 4900000448. my god,i am not oldbey,but OLDBOY! ? 第1个符号?? ^ ?? ?以....开头的行 ^m [[email?protected] /oldboy]# grep '^m'? oldboy.txt my blog is http://oldboy.blog.51cto.com my qq is 49000448 my god,but OLDBOY! cat -A 显示文件中所有符号? 每行结尾都会有个$ 3.3 第2个符号? $ 显示文件结尾的行[[email?protected] /oldboy]# grep ' $'? oldboy.txt my blog is http://oldboy.blog.51cto.com our size is http://blog.oldboyedu.com 3.4 第3个符号^$ 显示空行[[email?protected] /oldboy]# grep '^$'? oldboy.txt ? ? 3.5 第4个符号??? .? ????? 任意一个字符[[email?protected] /oldboy]# #grep? '.' oldboy.txt [[email?protected] /oldboy]# grep -o '.' oldboy.txt 3.6 第5个符号???? ????? 转义字符[[email?protected] /oldboy]# grep? '.$' oldboy.txt I teach linux. not 4900000448. [[email?protected] /oldboy]# tr? 'n'?? 't' <oldboy.txt I am oldboy teacher!?? I teach linux.????? I like badminton ball,billiard ball and chinese chess!?? my blog is http://oldboy.blog.51cto.com ??? our size is http://blog.oldboyedu.com ? my qq is 49000448?????? not 4900000448. my god,but OLDBOY! [[email?protected] /oldboy]# 3.7 第6个符号 ?? *???? 一个字符连续出现0或0次以上3.8 第7个符号 ?? .* 所有符号字符 包括空行[[email?protected] /oldboy]# grep '.*' oldboy.txt I am oldboy teacher! I teach linux. ? I like badminton ball,but OLDBOY! 正则中表示 连续出现或所有的时候 正则表达式有贪婪性 替你寻找的文字符号???? 有多少吃多少? 有多少匹配多少 ? [[email?protected] /oldboy]# grep '^.*o' oldboy.txt I am oldboy teacher! I like badminton ball,billiard ball and chinese chess! my blog is http://oldboy.blog.51cto.com our size is http://blog.oldboyedu.com not 4900000448. my god,but OLDBOY! ? 3.9 第8个符号 []每次匹配一个字符grep '[a-z]' oldboy.txt grep '[A-Z]' oldboy.txt grep '[0-9]' oldboy.txt ? grep '[a-zA-Z]' oldboy.txt grep '[a-Z]' oldboy.txt ? grep -i '[a-z]' oldboy.txt ???? -i 不区分大小写? ignore case 1.找出oldboy.txt中以m或n开头的行 [[email?protected] /oldboy]# grep '^[mn]'? oldboy.txt my blog is http://oldboy.blog.51cto.com my qq is 49000448 not 4900000448. my god,but OLDBOY! 2.找出oldboy.txt中以m或n开头并且以m或n结尾的行 [[email?protected] /oldboy]# grep '^[mn]'? oldboy.txt my blog is http://oldboy.blog.51cto.com my qq is 49000448 not 4900000448. my god,but OLDBOY! [[email?protected] /oldboy]# grep '^[mn]'? oldboy.txt|grep '[mn] $' my blog is http://oldboy.blog.51cto.com 3.10 第9个符号?? [^] 每次匹配一个字符,显示出除过这个字符的所有字符[[email?protected] ~]# grep '[^ab]' oldboy.tat I am oldboy teacher! I teach linux. I like badminton ball,billiard ball and chinese chess! my blog is http://oldboy.blog.51cto.com our size is http://blog.oldboyedu.com my qq is 49000448 not 4900000448. my god,but OLDBOY! 1.排除文件中的数字和大小写字母 [[email?protected] /oldboy]# grep '[0-Z]' oldboy.txt I am oldboy teacher! I teach linux. I like badminton ball,but OLDBOY! 第4章 扩展正则表达式 (ERE Extented Regular Expression)4.1 第10个符号?? + ?? 前一个字符连续出现1次或1次以上[[email?protected] /oldboy]# egrep '0+' oldboy.txt my qq is 49000448 not 4900000448. [[email?protected] /oldboy]# grep -E '0+' oldboy.txt my qq is 49000448 not 4900000448. [[email?protected] /oldboy]# grep '0+' oldboy.txt my qq is 49000448 not 4900000448. [[email?protected] /oldboy]# egrep '0+' oldboy.txt -o 000 00000 1.取出连续出现的小写字母 [[email?protected] /oldboy]# egrep '[a-z]+'? oldboy.txt 4.2 第11个符号? |? 或者[[email?protected] /oldboy]# egrep 'oldboy|linux'?? oldboy.txt I am oldboy teacher! I teach linux. my blog is http://oldboy.blog.51cto.com our size is http://blog.oldboyedu.com 1.先备份 /etc/ssh/sshd_config 然后 排除 文件中的#号的行或空行 [[email?protected] /oldboy]# egrep -v '^$|#' /etc/ssh/sshd_config Protocol 2 SyslogFacility AUTHPRIV PasswordAuthentication yes ChallengeResponseAuthentication no GSSAPIAuthentication yes GSSAPICleanupCredentials yes UsePAM yes AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE AcceptEnv XMODIFIERS X11Forwarding yes Subsystem? sftp??? /usr/libexec/openssh/sftp-server 实例4-1???????????? [^]与grep -v [^a-z]????????? 排除按字符 某个字符 某些字符 grep -v [a-z]?? 排除按行 [[email?protected] /oldboy]# grep '[^a-z]'? oldboy.txt I am oldboy teacher! I teach linux. I like badminton ball,but OLDBOY! +++++\!!!!$$$$$$^^^ ####!!!^^^^^[email?protected]@@@@#### [[email?protected] /oldboy]# grep -v '[a-z]'? oldboy.txt +++++\!!!!$$$$$$^^^ ####!!!^^^^^[email?protected]@@@@#### 4.3 第12个符号 () 表示一个整体? 反向引用/后向引用[[email?protected] /oldboy]# egrep 'oldb(o|e)y'? oldboy.txt I am oldboy teacher! my blog is http://oldboy.blog.51cto.com our size is http://blog.oldboyedu.com my god,but OLDBOY! 反向引用/后向引用 思路:把你想要的内容保护起来 () sed 在 's###g' 后两个井号之间使用? 数字 引用 [[email?protected] /oldboy]# echo 123456 123456 [[email?protected] /oldboy]# echo '<123456>' <123456> [[email?protected] /oldboy]# echo 123456|sed -r 's#(.*)#1#g' 123456 [[email?protected] /oldboy]# echo 123456|sed -r 's#(.*)#<1>#g' <123456> [[email?protected] /oldboy]# echo 123456|sed -r 's#(34)#<1>#g' 12<34>56 [[email?protected] /oldboy]# echo 123456|sed -r 's#(..)(..)(..)#3#g' 56 [[email?protected] /oldboy]# echo 123456|sed -r 's#(..)(..)(..)#32#g' 5634 [[email?protected] /oldboy]# echo 123456|sed -r 's#(..)(..)(..)#321#g' 563412 [[email?protected] /oldboy]# echo 123456|sed -r 's#(..)(..)(..)#3<21#g' [[email?protected] /oldboy]# echo 123456|sed -r 's#(..)(..)(..)#3<2>1#g' 56<34>12 4.4 第13个符号?? {}??? 0{n,m}表示至少出现了n次,最多出现m次[[email?protected] /oldboy]# egrep '0{3,4}' oldboy.txt my qq is 49000448 not 4900000448. [[email?protected] /oldboy]# egrep '0{3}' oldboy.txt my qq is 49000448 not 4900000448. [[email?protected] /oldboy]# egrep '0{3,4}' oldboy.txt my qq is 49000448 not 4900000448. [[email?protected] /oldboy]# egrep '0{3}' oldboy.txt my qq is 49000448 not 4900000448. 取×××号码 [[email?protected] /oldboy]# cat id.txt 金 211324198705244720 万 500224197105168312 任 1231231231oldboy 任 3oldboy 任 lidao97303136098 任 alex2197303136098 任 350182197303oldgir 吕 211282199209113038 孔 150000198309176071 邹 371001197412221284 贺 130185200011215926 杜 362522198711278101 向 14052219961008852X [[email?protected] /oldboy]# egrep '[0-9X]{18}' id.txt 金 211324198705244720 万 500224197105168312 吕 211282199209113038 孔 150000198309176071 邹 371001197412221284 贺 130185200011215926 杜 362522198711278101 ?? XXXXXXXXXXXXXXXXXX 向 14052219961008852X [[email?protected] /oldboy]# egrep '[0-9]{17}[0-9X]' id.txt 金 211324198705244720 万 500224197105168312 吕 211282199209113038 孔 150000198309176071 邹 371001197412221284 贺 130185200011215926 杜 362522198711278101 向 14052219961008852X 4.5 第14个符号 ?? 前一个字符连续出现0次或1次取出网卡的ip地址 方法1 [[email?protected] /oldboy]# ip a s eth0 |awk 'NR==3'|awk? -F"[ /]+"? '{print $3}' 10.0.0.200 [[email?protected] /oldboy]# 取出ifconfig eth0 ip地址和子网掩码 [[email?protected] /oldboy]# ifconfig eth0 |awk 'NR==2' ????????? inet addr:10.0.0.200? Bcast:10.0.0.255? Mask:255.255.255.0 [[email?protected] /oldboy]# ifconfig eth0 |awk 'NR==2' |awk -F"[ :]+"? '{print $4,$NF}' 10.0.0.200 255.255.255.0 方法二 [[email?protected] /oldboy]# ifconfig eth0 |awk 'NR==2' ????????? inet addr:10.0.0.200? Bcast:10.0.0.255? Mask:255.255.255.0 [[email?protected] /oldboy]# ifconfig eth0 |awk 'NR==2' |awk -F"addr:|Bcast:| Mask:"? '{print $2}' 10.0.0.200?? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |