Python之路-正则表达式

作业一:整理正则表达式博客

正则表通常被用来检索、替换那些符合某个模式(规则)的文本,为了提取对自己有用的信息,由命令解释执行;而通配符和命令是同一级别,为了提示处理效率,直接由shell解释执行。

^ 行首
$ 行尾
. 除了换行符以外的任意单个字符
* 前导字符的零个或多个
+ 前导字符一个或多个
? 前导字符零个或一个
x{m} x出现m次
x{m,n} x出现m次至n次
[] 字符组内的任一字符
[^] 取反

 

作业二:grep作业(正则表达式及字符处理)

grep -E=egrep 扩展模式

目标文件/etc/passwd,使用grep命令或egrep

1.显示出所有含有root的行:

[root@ym /]# egrep 'root' /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin

2.输出任何包含bash的所有行,还要输出紧接着这行的上下各两行的内容:

[root@ym /]# egrep -C 2 'bash' /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin --

postfix:x:
89:89::/var/spool/postfix:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin yangming:x:1000:1000:yangming:/home/yangming:/bin/bash nginx:x:987:982:Nginx web server:/var/lib/nginx:/sbin/nologin

3.  显示出有多少行含有nologin。

[root@ym /]# egrep -c 'nologin' /etc/passwd
40

4.显示出那些行含有root,并将行号一块输出。

[root@ym /]# egrep -n 'root' /etc/passwd1:root:x:0:0:root:/root:/bin/bash 10:operator:x:11:0:operator:/root:/sbin/nologin

5.显示出文件中

 

6.新建用户

abominable

abominate

anomie

atomize

编写正则表达式,将他们匹配出来

[root@ym /]# egrep 'a.omi(nabl|nat|z|)e' /etc/passwd

image

7.建四个用户

Alex213sb

Wpq2222b

yH438PIG

egon666

egon

过滤出用户名组成是字母+数字+字母的行

[root@ym /]# useradd Alex213sb [root@ym /]# useradd Wpq2222b [root@ym /]# useradd yH438PIG [root@ym /]# useradd egon666 [root@ym /]# useradd egon [root@ym /]# tail -5 /etc/passwd

Alex213sb:x:
1005:1005::/home/Alex213sb:/bin/bash Wpq2222b:x:1006:1006::/home/Wpq2222b:/bin/bash yH438PIG:x:1007:1007::/home/yH438PIG:/bin/bash egon666:x:1008:1008::/home/egon666:/bin/bash egon:x:1009:1009::/home/egon:/bin/bash
[root@ym /]# egrep '[a-Z]+[0-9]+[a-Z]+:' /etc/passwd

image

8.显示出/etc目录下所有包含root的文件名

[root@ym /]# ls /etc/ |egrep 'root'

image

9. 过滤掉/etc/ssh/sshd_config内所有注释和所有空行

[root@ym /]# grep -v '^#' /etc/ssh/sshd_config |grep '.$'

image

 

image

作业三:Sed作业:以/etc/passwd文件为模板

1,删除文件每行的第一个字符。

[root@ym /]# sed -r 's/^(.)(.*)$/\2/g' /etc/passwd

 

image

2,删除文件每行的第二个字符。

[root@ym /]# sed -r 's/^(.)(.)(.*)$/\1\3/g' /etc/passwd

image

3,删除文件每行的最后一个字符。

[root@ym /]# sed -r 's/(.*)(.)$/\1/g' /etc/passwd

image

4,删除文件每行的倒数第二个字符。

[root@ym /]# sed -r 's/(.*)(.)(.)$/\1\3/g' /etc/passwd

image

5,删除文件每行的第二个单词。

[root@ym /]# sed -r 's/([a-Z]+)([^a-Z]+)([a-Z]+)(.*)$/\1\2\4/g' /etc/passwd

image

6,删除文件每行的倒数第二个单词。

[root@ym /]# sed -r 's/([^a-Z]*)([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]*)$/\1\3\4\5/g' /etc/passwd

image

7,删除文件每行的最后一个单词。

[root@ym /]# sed -r 's/(.*)([^a-Z]+)([a-Z]+)([^a-Z]*)$/\1\2\4/g' /etc/passwd

image

8,交换每行的第一个字符和第二个字符。

[root@ym /]# sed -r 's/^(.)(.)(.*)/\2\1\3/g' /etc/passwd

image

9,交换每行的第一个字符和第二个单词。

[root@ym /]# sed -r 's/^(.)([^a-Z]*)([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]*)/\5\2\3\4\1\6/g' /etc/passwd

 

image

10,交换每行的第一个单词和最后一个单词。

[root@ym /]# sed -r 's/^([a-Z]+)(.*)([^a-Z]+)([a-Z]+)$/\4\2\3\1/g' /etc/passwd

image

11,删除一个文件中所有的数字。

[root@ym /]# sed -r 's/[0-9]//g' /etc/passwd

image

12,删除每行开头的所有空格。

[root@ym /]# vim /etc/passwd

[root@ym 
/]# head -4 /etc/passwd

   root:x:
0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin[root@ym /]# sed -r 's/^ *//' /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

image

13,用制表符替换文件中出现的所有空格。 

[root@ym /]# sed -r 's/ /\t/g' /etc/passwd

image

14,把所有大写字母用括号()括起来。

[root@ym /]# sed -r 's/[A-Z]/(&)/g' /etc/passwd

image

15,打印每行3次。

[root@ym /]# sed -r 'p;p' /etc/passwd

image

16,只显示每行的第一个单词。

[root@ym /]# sed -r 's/^([^a-Z]*)([a-Z]+)([^a-Z]*)(.*)/\2/' /etc/passwd

 

image

17,打印每行的第一个单词和第三个单词。

[root@ym /]# sed -r 's/^([^a-Z]*)([a-Z]+)([^a-Z]*)([a-Z]+)([^a-Z]*)([a-Z]+)([^a-Z]*)(.*)/\2\6/' /etc/passwd

image

18,用命令获取格式为    mm/yy/dd    的日期格式,结合管道,将其换成   mm;yy;dd格式

 

[root@ym /]# date +"%m/%Y/%d"|sed -r 's/\//;/g'
03;2017;22
posted @ 2017-03-22 15:15  silver|bullet  阅读(236)  评论(0)    收藏  举报