作业一:整理正则表达式博客
正则表通常被用来检索、替换那些符合某个模式(规则)的文本,为了提取对自己有用的信息,由命令解释执行;而通配符和命令是同一级别,为了提示处理效率,直接由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 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 image]()
8.显示出/etc目录下所有包含root的文件名
[root@ym /]# ls /etc/ |egrep 'root'
![image image]()
9. 过滤掉/etc/ssh/sshd_config内所有注释和所有空行
[root@ym /]# grep -v '^#' /etc/ssh/sshd_config |grep '.$'
![image image]()
![image image]()
作业三:Sed作业:以/etc/passwd文件为模板
1,删除文件每行的第一个字符。
[root@ym /]# sed -r 's/^(.)(.*)$/\2/g' /etc/passwd
![image image]()
2,删除文件每行的第二个字符。
[root@ym /]# sed -r 's/^(.)(.)(.*)$/\1\3/g' /etc/passwd
![image image]()
3,删除文件每行的最后一个字符。
[root@ym /]# sed -r 's/(.*)(.)$/\1/g' /etc/passwd
![image image]()
4,删除文件每行的倒数第二个字符。
[root@ym /]# sed -r 's/(.*)(.)(.)$/\1\3/g' /etc/passwd
![image image]()
5,删除文件每行的第二个单词。
[root@ym /]# sed -r 's/([a-Z]+)([^a-Z]+)([a-Z]+)(.*)$/\1\2\4/g' /etc/passwd
![image 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 image]()
7,删除文件每行的最后一个单词。
[root@ym /]# sed -r 's/(.*)([^a-Z]+)([a-Z]+)([^a-Z]*)$/\1\2\4/g' /etc/passwd
![image image]()
8,交换每行的第一个字符和第二个字符。
[root@ym /]# sed -r 's/^(.)(.)(.*)/\2\1\3/g' /etc/passwd
![image 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 image]()
10,交换每行的第一个单词和最后一个单词。
[root@ym /]# sed -r 's/^([a-Z]+)(.*)([^a-Z]+)([a-Z]+)$/\4\2\3\1/g' /etc/passwd
![image image]()
11,删除一个文件中所有的数字。
[root@ym /]# sed -r 's/[0-9]//g' /etc/passwd
![image 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 image]()
13,用制表符替换文件中出现的所有空格。
[root@ym /]# sed -r 's/ /\t/g' /etc/passwd
![image image]()
14,把所有大写字母用括号()括起来。
[root@ym /]# sed -r 's/[A-Z]/(&)/g' /etc/passwd
![image image]()
15,打印每行3次。
[root@ym /]# sed -r 'p;p' /etc/passwd
![image image]()
16,只显示每行的第一个单词。
[root@ym /]# sed -r 's/^([^a-Z]*)([a-Z]+)([^a-Z]*)(.*)/\2/' /etc/passwd
![image 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 image]()
18,用命令获取格式为 mm/yy/dd 的日期格式,结合管道,将其换成 mm;yy;dd格式
[root@ym /]# date +"%m/%Y/%d"|sed -r 's/\//;/g'
03;2017;22