正则表达式 grep文本查询 sed流处理 应用
一、正则表达:
^:以什么什么开头,^a:以a字符开头
$:以什么什么结尾,b$:以b字符结尾
*:左边字符0~无穷个
+:左边字符1~无穷个
.:代表单字符
?:前导字符为零个或1个
{n}:左面字符有n个
{n}$:左面字符n个结尾
{n,m}:左面字符n到m个
{n,}:左面字符n到无穷个
[]:匹配中括号中的限定的1个字符,有特殊符号需要转义字符
[a-z]:a到z中任意单字符
[a-zA-Z]:a到z和A到Z中任意单字符
[a-Z]:就是[a-zA-Z]
[0-9]{t}:0到9中任意t个单字符,也就是[0-9][0-9]
^[0-9]:以0到9中单数字开头
^[^0-9]:除了0到9中单数字开头
二、grep:文本搜索,匹配内容
grep 选项参数 命令
例如:
#grep -n 'root' /etc/passwd #静默查询/etc/passwd文件中root字符
选项参数:
-n:显示行号
-o:只显示匹配内容
-q:静默匹配不打印内容通过"echo $?"确认执行是否成功
-l:打印文件名
-A 2:打印本行加下2行
-B 3:打印本行加上3行
-C 4:打印本行加上4行加下4行
-i:匹配忽略大小写
-iv:匹配内容取反
-c:统计行数
-w:匹配单词
-E:扩展的grep版本,等同egrep
'abc':匹配单引号中的字符
-e 'abcd' -e 'abce':匹配abcd的单词或者abce的单词
'abc(d|e)':匹配abcd或者abce的单词,同上
三、sed:流处理
sed 选项参数 命令
例如:
#sed -n '3p' test.txt #静默输出第3行内容,3为定位行位置,p为命令
#sed ‘4a abcd’ test.txt #第4行追加abcd字符,a为命令
其中,
选项参数:
-n:静默处理,不打印输出结果
命令:
p:打印
c:替换行内容
a:追加内容
i:插入内容
1,4d:删除1到4行内容
1d,4d:删除1行和4行内容
d:删除
//:命令中使用正则表达式放入//中
//d:删除正则匹配到的行
s:替换
s/aaa/bbb/g:将全部行中的aaa替换为bbb,不加g则每行只替换第一个aaa
s/()()/\1\2/g:匹配两个括号中的内容,\1\2表示将第一个括号和第二个括号内容显示
例如:
#sed 's/^(.)(.*)$/\2/' test.txt #test文件中任意行去掉第一个字符,^(.)任意单字符开始,(.*)任意0到无穷字符,\2只显示第二个括号部分
四、应用grep(正则表达式及字符处理)
目标文件:/etc/passwd,使用grep命令或egrep处理
1.显示出所有含有root的行
#egrep 'root' /etc/passwd
2.输出任何包含bash的所有行,还要输出紧接着这行的上下各两行的内容
#egrep -C 2 'bash' /etc/passwd
3.显示出有多少行含有nologin
#egrep -c 'nologin' /etc/passwd
4.显示出那些行含有root,并将行号一块输出
#egrep -n 'root' /etc/passwd
5.-
6.新建用户abominable、abominate、anomie、atomize编写正则表达式,将他们匹配出来
#egrep '^a[a-z]omi[a-z]*' /etc/passwd
7.建5个用户Alex213sb、Wpq2222b、yH438PIG、egon666、egon过滤出用户名组成是字母+数字+字母的行
#egrep '^[a-Z]+[0-9]+[a-Z]+' /etc/passwd
8.显示出/etc目录下所有包含root的文件名
#find /etc |egrep 'root'
9.过滤掉/etc/ssh/sshd_config内所有注释和所有空行
#egrep '^[^\#][.]*' /etc/ssh/sshd_config
五、应用Sed
以/etc/passwd文件为模板
1.删除文件每行的第一个字符
#sed -r 's/(.)(.*)/\2/g' /etc/passwd
2.删除文件每行的第二个字符
#sed -r 's/(.)(.)(.*)/\1\3/g' /etc/passwd
3.删除文件每行的最后一个字符
#sed -r 's/(.*)(.)$/\1/g' /etc/passwd
4.删除文件每行的倒数第二个字符。
#sed -r 's/(.*)(.)(.)$/\1\3/g' /etc/passwd
5.删除文件每行的第二个单词。
#sed -r 's/^([a-Z]*)([^a-Z]*)([a-Z]*)([^a-Z]*)/\1\2\4/g' /etc/passwd
6.删除文件每行的倒数第二个单词。
#sed -r 's/([^a-Z]*)([a-Z]*)([^a-Z]*)([a-Z]*)$/\1\3\4/g' /etc/passwd
7.删除文件每行的最后一个单词。
#sed -r 's/([^a-Z]*)([a-Z]*)$/\1/g' /etc/passwd
8.交换每行的第一个字符和第二个字符。
#sed -r 's/^(.)(.)/\2\1/g' /etc/passwd
9.交换每行的第一个字符和第二个单词。*
#sed -r 's/^(.)([a-Z]*)([^a-Z]*)([a-Z]*)([^a-Z]*)/\4\2\3\1\5/g' /etc/passwd
10.交换每行的第一个单词和最后一个单词。*
#sed -r 's/^([a-Z]*)([^a-Z]*)(^[a-Z]*)([a-Z])$/\3\2\1/g' /etc/passwd
11.删除一个文件中所有的数字。
#sed -r 's/[0-9]//g' /etc/passwd
12.删除每行开头的所有空格。
#sed -r 's/^[ ]*//g' /etc/passwd
13.用制表符替换文件中出现的所有空格。
#sed -r 's/[ ]/\t/g' /etc/passwd
14.把所有大写字母用括号()括起来。
#sed -r 's/[A-Z]/(&)/g' /etc/passwd
15.打印每行3次。
#sed -r '{p;p}' /etc/passwd
16.只显示每行的第一个单词。
#sed -r 's/^([][ ]*)([a-Z]*)(.*)/\2/g' /etc/passwd
17.打印每行的第一个单词和第三个单词。
#sed -r 's/^([ ]*)([a-Z]*)([^a-Z]*)([a-Z]*)([^a-Z]*)([a-Z]*)(.*)/\2\6/g' /etc/passwd
18.用命令获取格式为 mm/yy/dd 的日期格式,结合管道,将其换成 mm;yy;dd格式
#date ‘+%m/%y/%m’ | sed -r 's/[/]/;/g'
正则表达式 grep文本查询 sed流处理 应用的更多相关文章
- 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 ...
- centos 正则,grep,egrep,流式编辑器 sed,awk -F 多个分隔符 通配符 特殊符号. * + ? 总结 问加星 cat -n nl 输出文件内容并加上行号 alias放~/.bash_profile 2015-4-10 第十三节课
centos 正则,grep,egrep,流式编辑器 sed,awk -F 多个分隔符 通配符 特殊符号. * + ? 总结 问加星 cat -n nl 输出文件内容并加上行号 alias放~ ...
- shell脚本之正则表达和文本处理(文本处理三剑客:1、grep 2、sed 3、awk)
文本处理三剑客:1.grep 2.sed 3.awk 一.grep:(过滤) grep的使用,主要的参数有: -n :显示行号:-o :只显示匹配的内容-q :静默模式,没有任何输出,得用e ...
- Linux正则表达式,grep总结,sed用法
原文: 1.sed 流编辑器,实现对文字的增删改替换查(过滤.取行),能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件 输入到屏幕,可以把只匹配到模式的内容输入到屏幕上.还可以对原文件 ...
- Linux正则表达式grep与egrep
grep -io "http:/=[A-Z0-9]\{16\}" ./wsxf.txt >wsxf_urls.txt Linux正则表达式grep与egrep 正则表达式:它 ...
- grep与正则表达式,grep、egrep和fgrep
grep用法详解:grep与正则表达式 首先要记住的是: 正则表达式与通配符不一样,它们表示的含义并不相同!正则表达式只是一种表示法,只要工具支持这种表示法, 那么该工具就可以处理正则表达式的字符串. ...
- shell:正则表达式和文本处理器
1.什么是正则 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 生活中处处都是正则: 比如我们描述:4条腿 你可能会想 ...
- Shell第二篇:正则表达式和文本处理工具
一 什么是正则 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 生活中处处都是正则: 比如我们描述:4条腿 ...
- BASH 正则表达式和文本处理工具
本节内容 1. 什么是正则 2. grep 3. sed 4. awk 5. 其他补充 一 什么是正则 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方 ...
随机推荐
- 项目上线,php的错误信息必须不让其在页面中显示给客户,
对于PHP开发者来 说,一旦某个产品投入使用,应该立即将 display_errors选项关闭,以免因为这些错误所透露的路径.数据库连接.数据表等信息而遭到黑客攻击.但是,任何一个产品在投入使用后,都 ...
- [转帖]amzon最新的产品outposts
2018年12月3日,全球领先的企业软件创新者VMware(NYSE: VMW)发布两款运行于AWS Outposts的全新解决方案预览:VMware Cloud on AWS Outposts与VM ...
- [转帖]华为Hi 1620 等ARM 服务器版本CPU信息.
华为ARM服务器恐依赖党政输血续命 一旦制裁立马休克 http://www.sohu.com/a/240833070_99934330 几年前,ARM服务器被业界炒的火热,AMD.高通.Marvell ...
- p2 碰撞
P2可以实现物体碰撞模拟,同时在碰撞过程中派发一些事件实现碰撞检测,将碰撞信息及时反馈,以添加相应的特效. P2中,当两个刚体的最小包围盒AABB发生重叠,碰撞就开始了:然后刚体的形状发生重叠,同时P ...
- CKEditor 4 & markdown & rich text editor
CKEditor 4 ckeditor 4 http://ckeditor.com
- 【刷题】BZOJ 4031 [HEOI2015]小Z的房间
Description 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时候,相邻的格子之间都有墙隔着. ...
- 学习Spring Boot:(七)集成Mybatis
前面都是用的是spring data JPA,现在学习下Mybatis,而且现在Mybatis也像JPA那样支持注解形式了,也非常方便,学习一下. 数据库 mysql 5.7 添加依赖 在pom文件中 ...
- 【BZOJ4247】挂饰(动态规划)
[BZOJ4247]挂饰(动态规划) 题面 BZOJ 题解 设\(f[i][j]\)表示前\(i\)个物品中还剩下\(j\)个挂钩时的最大答案. 转移显然是一个\(01\)背包,要么不选:\(f[i] ...
- 【BZOJ2463】谁能赢呢?(博弈论)
[BZOJ2463]谁能赢呢?(博弈论) 题面 BZOJ 洛谷 题解 洛谷上对于难度的评级我总觉有些问题. 很多人按照代码难度而并非思维难度在评级,导致很多评级很不合理啊... 不说废话了.. 对于一 ...
- 【bzoj1078】 SCOI2008—斜堆
http://www.lydsy.com/JudgeOnline/problem.php?id=1078 (题目链接) 题意 给出一个斜堆,并给出其插入的操作,求一个字典序最小的插入顺序. Solut ...