答案详见:http://www.cnblogs.com/linhaifeng/p/6596660.html

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

^ # 行首定位
$ # 行尾定位
. # 匹配除换行符以外的任意字符
* # 匹配0或多个重复字符
+ # 重复一次或更多次
? # 重复零次或一次
? # 结束贪婪因子 .*? 表示最小匹配
[] # 匹配一组中任意一个字符
[^] # 匹配不在指定组内的字符
\ # 用来转义元字符
< # 词首定位符(支持vi和grep) <love> # 词尾定位符(支持vi和grep) love>
x\{m\} # 重复出现m次
x\{m,\} # 重复出现至少m次
x\{m,n\} # 重复出现至少m次不超过n次
X? # 匹配出现零次或一次的大写字母 X
X+ # 匹配一个或多个字母 X
() # 括号内的字符为一组
(ab|de)+ # 匹配一连串的(最少一个) abc 或 def;abc 和 def 将匹配
[[:alpha:]] # 代表所有字母不论大小写
[[:lower:]] # 表示小写字母
[[:upper:]] # 表示大写字母
[[:digit:]] # 表示数字字符
[[:digit:][:lower:]] # 表示数字字符加小写字母
 
元字符
 
\d # 匹配任意一位数字
\D # 匹配任意单个非数字字符
\w # 匹配任意单个字母数字下划线字符,同义词是 [:alnum:]
\W # 匹配非数字型的字符
 
 
 
字符类:空白字符
 
\s # 匹配任意的空白符
\S # 匹配非空白字符
\b # 匹配单词的开始或结束
\n # 匹配换行符
\r # 匹配回车符
\t # 匹配制表符
\b # 匹配退格符
\0 # 匹配空值字符
 
 
 
字符类:锚定字符
 
\b # 匹配字边界(不在[]中时)
\B # 匹配非字边界
\A # 匹配字符串开头
\Z # 匹配字符串或行的末尾
\z # 只匹配字符串末尾
\G # 匹配前一次m//g离开之处
 
 
捕获
 
(exp) # 匹配exp,并捕获文本到自动命名的组里
(?<name>exp) # 匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp)
(?:exp) # 匹配exp,不捕获匹配的文本,也不给此分组分配组号
 
 
 
零宽断言
 
(?=exp) # 匹配exp前面的位置
(?<=exp) # 匹配exp后面的位置
(?!exp) # 匹配后面跟的不是exp的位置
(?<!--exp) # 匹配前面不是exp的位置
(?#comment) # 注释不对正则表达式的处理产生任何影响,用于注释
 
 
 
特殊字符
 
http://en.wikipedia.org/wiki/Ascii_table
^H \010 \b
^M \015 \r
匹配特殊字符: ctrl+V ctrl不放在按H或M 即可输出^H,用于匹配
--></name></love>

  

作业二:grep作业(正则表达式及字符处理)
目标文件/etc/passwd,使用grep命令或egrep
1.显示出所有含有root的行:

grep "root" /etc/passwd

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

grep -C 2 "bash" /etc/passwd

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

[root@python_lb yan]# grep -c "nologin" /etc/passwd

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

[root@python_lb yan]# grep -n "root" /etc/passwd

5.显示出文件中

6.新建用户
abominable
abominate
anomie
atomize
编写正则表达式,将他们匹配出来

[root@python_lb yan]# egrep '^a[a-z]+e' passwd

7.建四个用户
Alex213sb
Wpq2222b
yH438PIG
egon666
egon

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

[root@python_lb yan]# grep -Eni '^[a-Z]+[0-9]+[a-Z]+' passwd
53:Alex213sb:x:1005:1005::/home/Alex213sb:/bin/bash
54:Wpq2222b:x:1006:1006::/home/Wpq2222b:/bin/bash
55:yH438PIG:x:1007:1007::/home/yH438PIG:/bin/bash

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

[root@python_lb yan]# mkdir /etc/root
[root@python_lb yan]# mkdir /etc/1root
[root@python_lb yan]# mkdir /etc/root2
[root@python_lb yan]# ls /etc/|grep root
[root@python_lb yan]# ls /etc/*root*

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

[root@python_lb yan]# grep -v "^$" /etc/ssh/sshd_config|grep -v "^#"

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

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

[root@python_lb yan]# sed -r 's/^([a-Z0-9-])([a-Z0-9-]+)/\2/g' passwd

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

[root@python_lb yan]# sed -r 's/^([a-Z0-9-])([a-Z0-9-])([a-Z0-9-]+)/\1\3/g' passwd

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

[root@python_lb yan]# sed -r 's/([a-Z]+)[a-Z]$/\1/g' passwd

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

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

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

[root@python_lb yan]# sed -r 's/^([a-Z]+)([^a-Z]+)([a-Z]+)([^a-Z]+)/\1\2\4/g' passwd
[root@python_lb yan]# sed -r 's/^([a-Z0-9-]+)([^a-Z]+)([a-Z]+)([^a-Z]+)/\1\2\4/g' passwd

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

[root@python_lb yan]# sed -r 's/([a-Z]+)([^a-Z]+)([a-Z]+)$/\2\3/g' passwd

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

[root@python_lb yan]# sed -r 's/([^a-Z]+)([a-Z]+)$/\1/g' passwd

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

[root@python_lb yan]# sed -r 's/(^[a-Z])([a-Z])/\2\1/g' passwd

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

[root@python_lb yan]# sed -r 's/(^[a-Z])([a-Z0-9-]+)([^a-Z]+)([a-Z]+)/\4\2\3\1/g' passwd

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

sed -r 's/([a-Z]+)(.*)([^a-Z]+)([a-Z]+)$/\4\2\3\1/' passwd

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

 sed -r '/[0-9]+//g' passwd

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

sed -r 's/^ *//g' passwd

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

sed -r 's/ /\t/g' /etc/passwd

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

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

15,打印每行3次。

sed 'p;p' /etc/passwd

 

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

sed '1~2d' /etc/passwd
 

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

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

 

 

正则表达式,grep,sed,的更多相关文章

  1. 开发环境入门 linux基础 (部分)正则表达式 grep sed

    /etc/profile /etc/bashrc  .变量添加到shell环境中,永久生效. /root/.bashrc /root/.bash_profile 正则表达式 定义:正则就是用一些具有特 ...

  2. 使用方便 正则表达式grep,sed,awk(一)

    一些无稽之谈: 对于正则表达式,永远似了解不明白,看到一些代码,脚本定期,awk,sed.心里总有点虚.主要是记不住.平时又没怎么用,也就没总结了. 如今有空,决定总结一下,顺便克服一下看到shell ...

  3. Linux基础正则表达式:grep,sed

    先说明语系对正则表达式的影响    LANG=C:0,1,2,3,4...A,B,C,D...Z a b c d ... z    LANG=zh_CN:0,1,2,3,4...a A b B c C ...

  4. linux(5)--补充(管道| / 重定向> / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)

    本节中正则表达式的工具程序 grep,sed和awk是重点,也是难点!!! 先补充一下一. 管道| / 重定向> / xargs 如:1. 管道和重定向的区别:具体可以见 http://www. ...

  5. grep, sed, awk

    这几个工具是shell中非常好用的文本流处理工具,可以进行查找,编辑或者分析等工作,它们都支持正则表达式,也支持使用shell内置的变量 grep grep是一个字符串比较工具,用于从文件中提取满足条 ...

  6. Linux正则表达式grep与egrep

    grep -io "http:/=[A-Z0-9]\{16\}" ./wsxf.txt >wsxf_urls.txt Linux正则表达式grep与egrep 正则表达式:它 ...

  7. grep与正则表达式,grep、egrep和fgrep

    grep用法详解:grep与正则表达式 首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同!正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串. ...

  8. 【Linux】 字符串和文本处理工具 grep & sed & awk

    Linux字符串&文本处理工具 因为用linux的时候主要用到的还是字符交互界面,所以对字符串的处理变得十分重要.这篇介绍三个常用的字符串处理工具,包括grep,sed和awk ■ grep ...

  9. grep, sed 与 awk 补补课,到底怎么用!

    grep, sed 与 awk 相当有用 ! gerp 查找, sed 编辑, awk 根据内容分析并处理. awk(关键字:分析&处理) 一行一行的分析处理 awk '条件类型1{动作1}条 ...

  10. linux三剑客grep|sed|awk实践

    最好先学习正则表达式的基本用法,以及正则表达式BREs,EREs,PREs的区别 此坑待填 grep sed awk

随机推荐

  1. python开发环境配置和python源码打包生成exe可执行文件

    Windows下开发环境准备 1.分别安装:python2和python32.安装Python的集成工具:Anaconda3.安装Pycharm Pycharm设置 设置: File->Sett ...

  2. objectarx 把当前图形输出

    方法1: AcDbDatabase *pdb; acdbCurDwg()->wblock(pdb); pdb->saveAs(str); pdb->closeInput(true); ...

  3. 单元测试系列之九:Sonar 常用代码规则整理(一)

    更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 摘要:公司部署了一套sonar,经过一段时间运行,发现有一些问题出现频率很高,因此有必要将这些问题进行整理总结和分 ...

  4. Spring Boot 数据库连接池 HikariCP

    简介 HikariCP 来源于日语,「光」的意思,意味着它很快!可靠的数据源,spring boot2.0 已经将 HikariCP 做为了默认的数据源链接池. 官网详细地说明了HikariCP所做的 ...

  5. Catalog of Patterns of Enterprise Application Architecture

    Catalog of Patterns of Enterprise Application Architecture Last Significant Update: January 2003 A s ...

  6. centos, ubuntu 上docker 安装

    参考中国官网,可以愉快的访问,各种系统,在线/离线部署都有说明.中文哦!! https://docs.docker-cn.com/engine/installation/linux/docker-ce ...

  7. 调用Bytom Chrome插件钱包开发Dapp

    安装使用插件钱包 1. 打开Google浏览器的应用商店,搜索Bystore 下载链接:http://t.cn/E6cFFwb 2. 然后点击添加到Chrome,就可以添加到我们的: 3. 使用goo ...

  8. PageRank算法实现

    基本原理 在互联网上,如果一个网页被很多其他网页所链接,说明它受到普遍的承认和信赖,那么它的排名就高.这就是PageRank的核心思想. 引用来自<数学之美>的简单例子: 网页Y的排名应该 ...

  9. redis序列化

    private void setSerializer(StringRedisTemplate template) { Jackson2JsonRedisSerializer jackson2JsonR ...

  10. java笔记 -- 数组

    概念: 数组是一种数据结构, 用来存储同一类型值的集合. 通过一个整型的下标可以访问数组中的每一个值. 声明: int[] a(推荐,将类型int[](整形数组)和变量名分开了) 或者int a[] ...