day 18 正则表达式与取出ip地址
复习:
特殊符号: 引号 重定向符号 位置 判断 其他符号 通配符 VS 正则表达式 通配符:找出文件名 大部分命令可以使用 正则:?? ??精确的过滤 三剑客使用 ? 正则表达式 基础正则 ^ $ * .* ? ? ? ? 1.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,i am not oldbey,but OLDBOY! ? 1.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 ? ? [[email?protected] /oldboy]# grep '^[mn].*[mn]$'? oldboy.txt my blog is http://oldboy.blog.51cto.com ? 第2章 第9个符号-? [^] [^abc]?????? 相当于是一个符号(每次匹配1个字符) 2.1 找出除了a或除了b或除了c[[email?protected] /oldboy]# grep '[^abc]'? 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! ? ? 2.2 #排除文件中的数字和大小写字母[[email?protected] /oldboy]# grep '[0-Z]' oldboy.txt I am oldboy teacher! I teach linux. I like badminton ball,but OLDBOY! 小结: ^???? 以...开头的行 $???? 以...结尾的行 ^$??? 空行 .???? 任意一个字符 *???? 0个或多个 .*??? 所有 []??? [abc] [^]?? [^abc] ? ? ()?? 小括号 []?? 中括号 {}?? 大括号 花括号 ? ? 扩展正则 (ERE Extented Regular Expression) ? 第3章 第10个符号- +3.1 ??+ 前一个字符连续出现1次或1次以上0连续出现 ? [[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. ? ? 有加号和没有加号的区别: (-o显示过程) [[email?protected] /oldboy]# egrep '0+' oldboy.txt –o?? (一次多个) 000 00000 [[email?protected] /oldboy]# egrep '0' oldboy.txt -o 0 0 0 0 0 0 0 0 ? ? 3.1.1 #取出连续出现的小写字母? [[email?protected] /oldboy]# egrep '[a-z]+'? oldboy.txt? ? 查看过程: 第4章 第11个符号-?? |? 或者4.1 找oldboy或linux[[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 ? ? 4.2 #先备份 /etc/ssh/sshd_config 然后 排除 文件中的#号的行或空行备份:???? [[email?protected] oldboy]# cp /etc/ssh/sshd_config{,.bak} 排除: [[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 ? 第5章 正则表达式-坑3-? [^#^$]? [^$] [^#$][]中 $ . 没有特殊含义 编辑一些符号,然后查看 [[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,but OLDBOY! +++++\!!!!$$$$$$^^^ ####!!!^^^^^[email?protected]@@@@#### ? ? ? ? ? [[email?protected] /oldboy]# grep '[^#^$]'? oldboy.txt(执行这条命令相当于是排除# ^ $ 三个符号) I am oldboy teacher! I teach linux. I like badminton ball,billiard ball and chinese chess! my blog is http://oldboy.blog.51 cto.com our size is http://blog.oldboyedu.com my qq is 49000448 not 4900000448. my god,but OLDBOY! +++++\!!!!$$$$$$^^^ ####!!!^^^^^[email?protected]@@@@#### ? [[email?protected] /oldboy]# grep '.$'? oldboy.txt I teach linux. not 4900000448. ? ? [[email?protected] /oldboy]# grep '[.]$'? oldboy.txt I teach linux. not 4900000448. 第6章 正则表达式-坑4-? [^abc]? vs? grep -v? [^a-z]????????? 排除按字符 某个字符 某些字符 ? grep -v [a-z]?? 排除按行 6.1 排除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]@@@@#### ? ? ? ? ? ? 6.2 排除含有a-z的行[[email?protected] /oldboy]# grep -v '[a-z]'? oldboy.txt ? ? +++++\!!!!$$$$$$^^^ ####!!!^^^^^[email?protected]@@@@#### ? 6.3 第12个符号- () 表示一个整体? 反向引用/后向引用6.3.1 找出oldboy或oldbey找共同点: ???????? 只差o和e两个字母,将它们作为一个整体 先保护起来,然后使用 [[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! ? 反向引用/后向引用 ? 思路:把你想要的内容保护起来 () 6.4 ?sed 在 's###g' 后两个井号之间使用? 数字 引用? [[email?protected] /oldboy]# echo 123456 123456 [[email?protected] /oldboy]# echo '<123456>' <123456> ? [[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>??????????????????????? (将所有数字作为一个整体,在它们前后加上<>) ? echo? 123456 12<34>56 [[email?protected] /oldboy]# echo 123456|sed -r 's#(34)#<1>#g' 12<34>56??????????????????????? (将34作为一个整体,在它们前后加上<>) [[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 第13个符号 { } 0{n,m} 前一个字符至少连续出现了n次,最多连续出现m次 a{n,m}前一个数字连续出现至少n次最多m次 a{n}前一个数字连续出现n次 a{n,}前一个数字连续出现至少n次 a{,m}前一个数字连续出现最多m次 ? 过滤出0至少出现三次,最多出现4次 ? [[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. ? 第7章 提取×××号练习题:?[[email?protected] /]# 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 向 14052219961008852X ? ? [[email?protected] /oldboy]# egrep '[0-9]{17}[0-9X]' id.txt 金 211324198705244720 万 500224197105168312 吕 211282199209113038 孔 150000198309176071 邹 371001197412221284 贺 130185200011215926 杜 362522198711278101 向 14052219961008852X ? BRE ?????? 1. ^ ?????? 2. $ ?????? 3. ^$ ?????? 4. .(点) ?????? 5. * ?????? 6. .* ?????? 7. [] [a-z] [A-Z]? [0-9] ????????????? ???? grep/egrep [a-Z] ?????? 8. [^] ? ERE小结 ?????? 1.+?? ?????? 2.|?? ?????? 3.()? ?????? 4.{}? ?????? 5. ?? ? 第8章 取出网卡的ip地址ip a?????? s??? eth0 ip address show eth0 ? ? 某一行的某一部分 1.定位 取出某一行 2.sed/awk 取出想要的内容 ? 方法1 ? [[email?protected] /oldboy]# ip a s eth0 |awk 'NR==3'|awk? -F"[ /]+"? '{print $3}' 10.0.0.200 [[email?protected] /oldboy]# ? ? ? ? 8.1 取出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:"? '{print $2}' 10.0.0.200 ? ? [[email?protected] oldboy]# ifconfig eth0 |awk 'NR==2' |awk -F"addr:|Mask:|Bcast:"? '{print $2,$NF}' 10.0.0.200?? 255.255.255.0 [[email?protected] oldboy]# ? ? ? 小结: 1.取出ip地址 2.awk方法 -F (指定分隔符) ? ? 总结: 1.正则 BRE ERE 2.排除文件中的空行或以#开头的行 grep sed awk 3.取出网卡ip地址 ifconfig eth0 ip a awk sed (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |