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 d D... z Z
因为不同语系用[a-z]筛选的不同,所以出现了特殊符号
[:alnum:] : 即0-9,a-z,A-Z,英文大小写字符和数字,
[:alpha:] : 即a-z,A-Z,任何英文大小写字符
[:digit:] : 即0-9,所有数字
[:upper:] : 即A-Z,所有大写字符
[:lower:] : 即a-z,,所有小写字符
[:space:] : 任何会产生空白的字符,包括空格,Tab和CR等
[:blank:] : 空格和tab
[:cntrl:] : 键盘上的控制按键,包括C,LF,Tab,Del等
其他参考网上相关资料
现在看不到没关系,下面有例子
grep的一些高级参数
再11.5中已经讨论到了grep的基本用法
grep:分析一行信息
grep '查找的字符串' filename
找到的话就列出字符串存在的行
grep -i 忽略大小写
grep -n 顺便输出行号
grep -c 只计算找到的次数,不显示行
grep -v '' filename 显示没有的行
grep --color=auto '' filename 关键字有特殊颜色
grep -An1 -Bn2 ‘字符串’ filename
-A:after,显示出后续几行
-B:before,显示多前几行
-C:上下个几行
只要有找到的,都会在其下面或上面都n行如果选出的没有颜色
可以自定义个人环境变量
在~/.bashrc中添加 alias grep='grep --color=auto' 再sourc ~/.bashrc
示例文本内容
regular_express.txt
"Open Source" is a good mechanism to develop programs.
apple is my favorite food.
Football game is not use feet only.
this dress doesn't fit me.
However, this dress is about $ 3183 dollars.
GNU is free air not free beer.
Her hair is very beauty.
I can't finish the test.
Oh! The soup taste good.
motocycle is cheap than car.
This window is clear.
the symbol '*' is represented as start.
Oh! My god!
The gd software is a library for drafting programs.
You are the best is mean you are the no.1.
The world <Happy> is the same as "glad".
I like dog.
google is the best tools for search keyword.
gooooole yes!
go! go! Let's go.
#I am Vbird
grep所有用法示例:(每个例子都会列出-n显示行数)
a.(反向,不论大小写)查找特定字符串
grep -n[v][i] '字符串' 文件如果查找的有特殊字符(.*\{}‘),需要转义,下面(c)介绍
小数点,星号,反斜杠,大括号,单引号,不包括小括号(小括号是可以直接找到的)
b.利用中括号[]查找集合字符(就是可能出现的都写在中括号中,加^变成不存在的)查找不是以g开头的后面接'oo'的字符串
剔除小写字符
我们知道因为语系不同可能会有影响可以使用特殊符号选取
c.任意一个字符. 与重复字符*
.(小数点): 代表一定有一个任意字符
*(星号):代表重复(RE,repeat)前一个0到无穷多次的意思,为组合形态
这里的*与通配符的*是不一样的,通配符中的*是0个或多个字符的意思
g,d中间有两个字符查找两个o以上的
两个g之间至少有一个o
.*代表0个或多个字符
找出所有数字
说明的是星号前面不一定是固定的东西,可能是正则表达式
d.使用行首字符^和行尾字符$
^与前面的反向选是不一样的
反向选择字符是在中括号[]里面的,
所有只要看到^在[]中,那么它就是反选,否则就是行首字符找出以字符开头的
不想要字母开头的
或者
找出以.结尾的字符
因为是特殊字符,需要用\转义注意:windows中的断行字符判断是不一样的,所以可能会出现找不到的问题
具体解决方法以后有时间会更新或者百度上有讲解
找出(去除)空白行
^$
去除一个文件中的空白行和注释
grep -v '^$' 'filename' | grep -v '^#'
可自己分析原本共有48行,除去后
e.限定连续RE(重复)字符范围{n1,n2} (n1,n2出现一个也可以)
同样因为{}是转义字符,需要用\失去特殊意义
找出o出现两次的
其他特殊字符查询
sed工具
本身也是一个管道命令,可以分析standard input的,而且sed还可以将数据进行替换,删除,新增,选取特定行等功能
sed [-nefr] [’动作‘]
参数:
-n:安静模式,只有经过sed特殊处理的那一行(或者操作)才会被列出来
默认stdin和修改后的信息都会打印出来,
-e:直接在命令行模式进行sed的动作编辑
-f:直接将sed动作写在一个文件中,-f filename可以执行filename内的sed动作
-r:sed动作支持的是扩展型正则表达式(默认是基础正则表达式语法)
-i:直接修改读取的文件内容,而不是由屏幕输出 (默认是读取修改后输出到屏幕,原文件不会改变)
动作=[n1[,n2]]function
function:
a:新增,后接字符串,会在指定行的下一行插入一行
c:替换,后接字符串,替换n1,n2之间的行
d:删除,不加字符串
i:插入,后接字符串,再指定行的上一行插入一行
p:打印,将某个选择的数据打印出来,通常与sed -n一起运行
s:替换,可以直接进行替换工作。通常搭配正则表达式
以行(hang)为单位的新增(sed '-2a str')和删除(sed 'n1,n2d')功能:
sed '2,5d'
sed '2a Hello World'
sed '2a Hello Word \[Enter] Yes'
以行为单位的替换(sed 'n1,n2c str')与显示(sed -n 'n1,n2p')功能
显示就像head tail组合功能
sed '2,5c No 2-5 number'
sed -n '2,5p'
部分数据的查找和替换功能(send 's/要被替换的字符串/新的字符串/g' 删除sed '/字符串/d')
要被替换的字符串可以是正则表达式
sed 's/#.*$//g' 将注释行替换为空白行
直接修改文件内容(有时可用,但重要文件记得备份)
sed -i 's/../../g' filename
Linux基础正则表达式:grep,sed的更多相关文章
- 开发环境入门 linux基础 (部分)正则表达式 grep sed
/etc/profile /etc/bashrc .变量添加到shell环境中,永久生效. /root/.bashrc /root/.bash_profile 正则表达式 定义:正则就是用一些具有特 ...
- linux 三大利器 grep sed awk 正则表达式
正则表达式目标 正则表达式单字符: 特定字符 范围字符:单个字符[ ] :代表查找单个字符,括号内为字符范围 数字字符:[0-9],[259] 查找 0~9 和 2.5 .9 中的任意一个字符 小写字 ...
- Linux的正则表达式grep,egrep
一.概念 正则表达式是对字符串操作的一种逻辑公式,用事先定义好的一组特殊字符,组成一个"规则字符集合",根据用户指定的文本模式对目标文件进行逐行搜索匹配,显示能被模式匹配到的结果. ...
- linux基础之grep
grep: Global search REgular expression and Print out the line 作用: 文本搜索工具,根据用户指定的模式对目标文本逐行进行匹配检查,打印匹配 ...
- Linux基础-正则表达式整理---------------grep、sed、awk
目录: Ⅰ:正则表达式 Ⅱ:作业 Ⅰ:正则表达式 正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法.或者说:正则就是用来描述一类事物的规则. 在lin ...
- 使用方便 正则表达式grep,sed,awk(一)
一些无稽之谈: 对于正则表达式,永远似了解不明白,看到一些代码,脚本定期,awk,sed.心里总有点虚.主要是记不住.平时又没怎么用,也就没总结了. 如今有空,决定总结一下,顺便克服一下看到shell ...
- [svc]linux正则实战(grep/sed/awk)
企业实战: 过滤ip 过滤出第二行的 192.168.2.11. eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ine ...
- Linux基础:Grep查询&AWK查询
Grep:搜索文件内匹配指定内容的行 常用的Grep搜索方法: 1. grep "普通搜索内容" file( 或者 cat file|grep "普通搜索内容" ...
- 【Linux基础】grep命令
1.简介 grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来. 命令格式:grep [option] pattern file 2.常用参数与举例: -e : 使用P ...
随机推荐
- 使用 node-inspector 调试 Node.js
大部分基于 Node.js 的应用都是执行在浏览器中的, 比如强大的调试工具 node-inspector. node-inspector 是一个全然基于 Node.js 的开源在线调试工具,提供了强 ...
- Nuget的使用
前言 最近看到园子上有关于NuGet (读音:new get)的使用,所以心血来潮也跟着学习做了一下,觉得很流b哦.于是也就记一下自己的学习心得(并非一味的重复轮子,只是觉得他人做的写的就是对的,自己 ...
- 试DG周围环境
试DG周围环境 周围环境 名称 主库 备库 主机名 bjsrv shsrv 软件版本号 RedHat Enterprise5.5.Oracle 11g 11.2.0.1 RedHat Enterpri ...
- SDUT oj 3005 打怪升级(内存搜索)
当比赛一直纠缠骑2如何做一个非常大的数量,数组不开啊...后来他们发现自己很傻啊,该数不超过最大10什么,这个上限就是力量100什么.. .. 其它的就是记忆化搜索啊,还有就是加一点力量的瓶子当时就要 ...
- winmd文件和dll文件的区别
今天在研究一个二维码项目,用到一个第三方组件 ZXing,因为做的是Windows应用商店程序,应用商店程序是可以引用winmd文件也可以引用dll文件,但是这两种文件ZXing都提供了,最后和同事讨 ...
- 读改善c#代码157个建议:建议1~3
目录: 建议一:正确操作字符串 建议二:使用默认转型方法 建议三:区别对待强制转型和as 建议一.正确操作字符串 1.确保尽量少的装箱 static void Main(string[] args) ...
- NGUI 3.5课程(五岁以下儿童)button-图片切换
然后,我们去了一个样本,做一个button画面切换. 特征,像球员"开始"和"暂停". 写TestButton.cs脚本: using UnityEngine; ...
- 使用exchange普通表模式被切换到分区表
随着数据库的不断增长的数据量.有些表需要转换的普通堆表分区表模式. 有几种不同的方式来执行此操作,如出口数据表,区表再导入数据到分区表:使用EXCHANGE PARTITION方式来转换为分区表以及使 ...
- URAL 1141. RSA Attack RSA加密演算法
标题来源:URAL 1141. RSA Attack 意甲冠军:给你e n c 并有m^e = c(mod n) 求 m 思路:首先学习RSA算法 here 过程大致是 1.发送的信息是m 2.随机选 ...
- 脸识别API微软牛津项目
微软牛津项目人脸识别API初探 按照董子的这篇博客中的介绍,到微软牛津项目的网站申请到测试用的人脸识别Key,按照官方文档的介绍,把wpf项目建好之后,按照一步步的流程下来就可以完成example中的 ...