第五周作业
2016-09-04 13:46
232 查看
1、显示当前系统上root、fedora或user1用户的默认shell;
+:前面字符可以出现一次或多次
\(\):需要使用转义符\表示为小括号() 3、使用echo命令输出一个绝对路径,使用grep取出其基名;
扩展:取出其路径名
所以可将正则表达式按点拆分为四段
再附上超详细解析 ^PATTERN$ 用于模式匹配整行{2}表示前面字符正好出现两次| 的意思是或者( )上面的括号不能少,是为了匹配括号中整体字符串,表达式中有几个()就表示有几个相应的匹配字符串[0-4]表示0~4的任何一个数字[0-9]表示0~9的任何一个数字[1-9]的意思是1~9之间的任意一个数字[1-9][0-9]的意思是10~99之间的任意一个数字1[0-9]{2}的意思就是100~199之间的任意一个数字2[0-4][0-9]的意思是200~249之间的任意一个数字25[0-5]的意思是250~255之间的任意一个数字\.的意思是.点要转义为普通字符
6、挑战题:写一个模式,能匹配出所有的邮件地址;连败
英文域名格式如下:域名由各国文字的特定字符集、英文字母、数字及“ - ” ( 即连字符或减号 ) 任意组合而成 , 但开头及结尾均不能含有“ - ”
再附上超详细解析 ^[A-Za-z0-9] 行首为字母或数字开头[_.-]? 出现0或者1次下划线,点,连字符[a-zA-Z0-9]+ 出现一次或多次大小写字母或者数字
() 括号中的字符为一个整体@ 电子邮件标识,用于分隔用户名和域名* 出现任意次
[.-]? 出现0或者1次点,连字符
{2,} 前面的字符出现两次以上
$ 匹配行尾
7、查找/var目录下属主为root,且属组为mail的所有文件或目录;
知识点
按时间查找文件
-------(+n)-------|------------(n)-------------------|---------(-n)----
(n+1)×24小时前 | (n+1)×24H ~ n×24小时之间 | n×24小时以内
摩根定律:!A -a !B = !(A -o B)
!A -o !B = !(A -a B)
# useradd fedora # useradd user1 # grep -E "^(root|fedora|user1)\>" /etc/passwd |cut -d: -f1,7 (注意是使用扩展正则表达式)^ :行首| :或者():将一个或多个字符捆绑在一起,当作一个整体进行处理cut -d 分隔符 -fN,M :指定分隔符,取第N和第M字段 第1段为用户名,第7段为默认命令解析器(shell)/etc/passwd格式:account:password:UID:GID:GECOS:diretory:shell 2、找出/etc/rc.d/init.d/functions文件中某单词后面跟一组小括号的行,形如:hello();
# grep -E -o "^[_[:alpha:]]+\(\)" /etc/rc.d/init.d/functions查看functions文件可以留意到文件中存在"_字母()"的行,所在使用[_[:alpha:]]表示有_或大小写字母的字符集
+:前面字符可以出现一次或多次
\(\):需要使用转义符\表示为小括号() 3、使用echo命令输出一个绝对路径,使用grep取出其基名;
# echo "/tmp/html/test.php" | grep -E -o "[^/]+$" test除了/斜线的任意内容出现1次以上,仅显示匹配的字符
# echo "/mnt/sdc/" | grep -E -o "[^/]+/?$" | cut -d"/" -f1如果行尾出现斜杠/,需要添加/?则斜杠出现一次或零次,使用cut用/作为分隔符,取第1字段
# basename /tmp/html/test.php #获取基名 test.php # basename /tmp/html/test.php .php #去除指定后缀(也可以使用参数-s 后缀) test
扩展:取出其路径名
# echo "/tmp/html/test.php" | grep -o "/.*/" # dirname /tmp/html/test.php #获取指定路径所在的目录 /tmp/html4、找出ifconfig命令结果中的1-255之间数字;
# ifconfig | egrep -o "[1-9][1-9]?[1-9]?"5、挑战题:写一个模式,能匹配合理的IP地址;挑战失败来源于网络收集(膜拜)iPv4的ip地址都是(1~255).(0~255).(0~255).(0~255)的格式称为点分十进制(由32位二进制转换)
所以可将正则表达式按点拆分为四段
^(1[0-9+]{2}|2[0-4][0-9+]|25[0-5]|[1-9][0-9+]|[1-9])\. (1[0-9+]{2}|2[0-4][0-9+]|25[0-5]|[1-9][0-9+]|[0-9+])\. (1[0-9+]{2}|2[0-4][0-9+]|25[0-5]|[1-9][0-9+]|[0-9+])\. 1[0-9+]{2}|2[0-4][0-9+]|25[0-5]|[1-9][0-9+]|[0-9+])$
# echo -e "192.168.3.51\n10.1.a.1\na.v.b.d\n922.2.3.5" 192.168.3.51 10.1.a.1 a.v.b.d 922.2.3.5
#echo -e "192.168.3.51\n10.1.a.1\na.v.b.d\n922.2.3.5"|grep -E "^(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[1-9])\.(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9+]|[0-9])\.(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])\.(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])$" 192.168.3.51
再附上超详细解析 ^PATTERN$ 用于模式匹配整行{2}表示前面字符正好出现两次| 的意思是或者( )上面的括号不能少,是为了匹配括号中整体字符串,表达式中有几个()就表示有几个相应的匹配字符串[0-4]表示0~4的任何一个数字[0-9]表示0~9的任何一个数字[1-9]的意思是1~9之间的任意一个数字[1-9][0-9]的意思是10~99之间的任意一个数字1[0-9]{2}的意思就是100~199之间的任意一个数字2[0-4][0-9]的意思是200~249之间的任意一个数字25[0-5]的意思是250~255之间的任意一个数字\.的意思是.点要转义为普通字符
6、挑战题:写一个模式,能匹配出所有的邮件地址;连败
^[A-Za-z0-9](([_.-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([.-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$
英文域名格式如下:域名由各国文字的特定字符集、英文字母、数字及“ - ” ( 即连字符或减号 ) 任意组合而成 , 但开头及结尾均不能含有“ - ”
再附上超详细解析 ^[A-Za-z0-9] 行首为字母或数字开头[_.-]? 出现0或者1次下划线,点,连字符[a-zA-Z0-9]+ 出现一次或多次大小写字母或者数字
() 括号中的字符为一个整体@ 电子邮件标识,用于分隔用户名和域名* 出现任意次
[.-]? 出现0或者1次点,连字符
{2,} 前面的字符出现两次以上
$ 匹配行尾
7、查找/var目录下属主为root,且属组为mail的所有文件或目录;
# find /var -user root -group mail8、查找当前系统上没有属主或属组的文件;
# find / -nouser -o -nogroup进一步:查找当前系统上没有属主或属组,且最近3天内曾被访问过的文件或目录;
# find / -nouser -a -nogroup -a -atime -39、查找/etc目录下所有用户都有写权限的文件;
# find /etc -perm -222 -ls10、查找/etc目录下大于1M,且类型为普通文件的所有文件;
# find /etc -size +1M -type f11、查找/etc/init.d/目录下,所有用户都有执行权限,且其它用户有写权限的文件;
# find /etc/init.d -perm -113 -ls12、查找/usr目录下不属于root、bin或hadoop的文件;
# find /usr -not \( -user root -o -user bin -o -user hadoop \13、查找/etc/目录下至少有一类用户没有写权限的文件;
# find /etc -not -perm -222 -ls14、查找/etc目录下最近一周内其内容被修改过,且不属于root或hadoop的文件
# find /etc -mtime -7 -not \( -user root -o -user hadoop \) -ls
知识点
按时间查找文件
-------(+n)-------|------------(n)-------------------|---------(-n)----
(n+1)×24小时前 | (n+1)×24H ~ n×24小时之间 | n×24小时以内
摩根定律:!A -a !B = !(A -o B)
!A -o !B = !(A -a B)
相关文章推荐
- 第五周作业
- 计科1111-1114班第五周讲义、课外作业(强连通分量、BFS,截止日期:2014年4月11日23点-周五晚,学委飞信通知同学)
- 团队作业-第五周-测试与调试
- 第五周作业2(LeetCode76)
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业
- 第五周作业
- 第五周作业
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业_2013551605
- 第五周作业
- 第五周作业——有向图邻接表表示及反向图构造
- 第五周作业总结(内含用Junit测试ArrayStack和LinkedStack课堂练习报告)
- 高级编程技术作业第五周 第十章课后练习
- AndrewNg机器学习第五周作业:多输出神经网路最后输出结果含义
- 第五周作业
- 第五周作业任务二
- Java第五周作业