码迷,mamicode.com
首页 > 其他好文 > 详细

正则表达式

时间:2018-06-18 01:16:02      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:ssi   数字   fun   地址   locate   -o   保留   dig   amp   

正则表达式:(Regular Expression regex regexp) find vim locate grep sed awk 第一类正则: 前导字符,(位于元字符前面的字符);元字符:在正则里有特殊的专用的含义的符号 . 除了换行符以外的任意单个字符 * :前导字符出现0次或连续多次 bo* bo|boo .* :任意长度的字符 ^ :以...开头 $ :以...结尾 ^$ :空行 [ ] :匹配指定字符组中的任意字符 [^] :匹配不在指定字符组的任意字符 ^[] :匹配以指定字符组中的字符开头的任意字符 ^[^] :匹配不以指定字符组中的字符开头的任意字符 \< :以...开头的单词 \> :以...结尾的单词 \< ... \> :以...开头,以...结尾的单词 \{n\} {n}:匹配前导字符出现n次 \{n,\} {n,}:匹配前导字符至少出现n次 \{n,m\} {n,m}:匹配前导字符出现n~m次 \( ... \) :保留匹配的字符 \d:匹配数字 \w:匹配字母,数字,下划线 \s:匹配空格,制表符,换行符 # grep -P ‘\d‘ file + :前导字符连续出现1次或多次 ? :前导字符出现0次或1次 # grep -E go+ file 或 egrep go+ file 扩展正则: grep -E|egrep 1111 grep ‘root|sync‘ /etc/passwd 1112 grep -E ‘root|sync‘ /etc/passwd 1113 egrep ‘root|sync‘ /etc/passwd +: bo+ bo boo 前导字符连续出现1次或者多次 ?:前导字符连续出现0次或者1次 1117 grep -E ‘g+‘ test1 1118 grep ‘g+‘ test1 1119 egrep ‘g+‘ test1 1120 grep -E ‘g+o?‘ test1 1121 grep -E ‘go?‘ test1 \d [0-9] \w 匹配数字字母和下划线 \s 匹配空格、制表符、换页符、换行符(\t\r\n) 1129 grep -P ‘\d‘ test 1130 grep -P ‘\w‘ test 1131 vim test 1132 grep -P ‘\s‘ test 第二类正则: 练习: 1、查找不以大写字母开头的行(3种写法) ‘\<[^A-Z]‘ -v ‘^[A-Z]‘ [[:upper:]] 2、查找有数字的行(2种) [0-9] [[:digit:]] 3、查找一个数字和一个字母连起来的行 grep -E ‘[0-9][a-Z]|[a-Z][0-9]‘ 4、查找不以r开头的行 -v ^r 5、查找以数字开头的行 grep ^[0-9] 6、查找以大写字母开头的 grep ^[A-Z] 7、查找以小写字母开头的 grep ^[a-z] 8、查找以点.结尾的 grep .$ 9、去掉空行 grep -v ^$ gr 10、 完全匹配abc的行 11、查找A后有三个数字的行 grep ‘A[0-9]\{3,\}‘ grep -E ‘A[0-9]{3,}‘ 12、统计root在/etc/passwd里出现的次数 grep -o root /etc/passwd|wc -l 13、用正则表达式找出自己的IP地址、广播地址、子网掩码(一条命令搞定) # ifconfig eth0|grep Bcast|grep -o ‘[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}‘ # ifconfig eth0|grep Bcast|grep -o -P ‘\d+\.\d+\.\d+\.\d+‘ 14、找出文件中的ip地址并打印替换成172.16.2.254 # sed -n ‘s/\([0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.\)110/\1254/p‘ test # sed -n ‘s/\(172\.16\.2\.\)110/\1254/p‘ test 【 sed -n ‘s/\([0-9]\{1,3\}\.\)193\(\.[0-9]\{1,3\}\.\)159/\1210 \2254/p‘ passwd】 10.193.26.159--->10.210.26.254 15、找出文件中的ip地址 # grep -o -P ‘\d+\.\d+\.\d+\.\d+‘ test 练习: 写脚本自动搭建web服务,要求如下: 1、基于域名的虚拟主机(DNS可以用脚本也可以写到hosts文件中即可) 2、访问www.myweb.com——>this is myweb test page 3、web服务器的ip和主机名交互式的从外部输入,并且如果不输入一致提示输入 提示: 在脚本中可以先写一个函数,目的是如果不输入相应的内容则一致提示输入 4、搭建完后要显示测试是否成功 5、根据自己的想法可以是该脚本更丰富 #!/bin/bash conf=/etc/httpd/conf/httpd.conf #定义一个函数 function_fun(){ input_var="" output_var=$1 while [ -z $input_var ] do read -p "$output_var:" input_var done echo $input_var } #定义3个变量来保存ip、主机名和数据根目录 IP=$(function_fun "请输入你的IP地址(10.1.1.1)") HOST=$(function_fun "请输入你的主机名(www.test.com)") ROOT_DIR=$(function_fun "请输入你的数据根目录(/var/www/html)") #创建数据根目录以及首页文件 [ ! -d $ROOT_DIR ] && mkdir -p $ROOT_DIR chown apache.apache -R $ROOT_DIR echo "this is myweb test page" > $ROOT_DIR/index.html echo "$IP $HOST" >> /etc/hosts #发布虚拟主机 [ -f $conf ] && cat >>$conf <

正则表达式

标签:ssi   数字   fun   地址   locate   -o   保留   dig   amp   

原文地址:https://www.cnblogs.com/skyzy/p/9194222.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!