linux命令正则过滤 linux正则表达式匹配字符串( 四 )


grep '.' access1.log|grep -E '404'access2.log
输出:
[root@localhost test]# grep “.”access1.log|grep -Ev “404”access2.log
说明:上面3句命令前面两句是在当前目录下对access1.log文件进行查找 , 找到那些不包含404的行,把它们放到access2.log中,后面去掉’v’,即是把有404的行放入access2.log
Linux正则表达式教程:Grep Regex示例 正则表达式是特殊字符,可帮助搜索数据,匹配复杂模式 。正则表达式缩写为“regexp”或“regex” 。
为了便于理解,让我们逐一学习不同类型的正则表达式 。
[TOC]
一些常用的正则表达式命令是tr,sed , vi和grep 。下面列出了一些基本的正则表达式 。
我们来看一个例子吧 。
执行cat示例以查看现有文件的内容
搜索包含字母'a'的内容 。
'^'匹配字符串的开头 。让我们搜索一下STARTS的内容
仅过滤以字符开头的行 。将忽略开头不包含字符“a”的行 。
让我们看看另一个例子 -
仅选择那些以 $ 结尾的行
这些表达式告诉我们字符串中字符的出现次数 。他们是
例:
过滤掉包含字符'p'的所有行
我们想要检查字符'p'是否在字符串中依次出现2次 。为此 , 语法将是:
注意:您需要使用这些正则表达式添加-E 。
这些正则表达式包含多个表达式的组合 。他们之中有一些是:
例:
搜索所有字符't'
假设我们要过滤字符'a'在字符't'之前的行
我们可以使用命令
大括号扩展的语法是花括号“{}”内的序列或逗号分隔的项目列表 。序列中的起始和结束项由两个句点“..”分隔 。
一些例子:
在上面的示例中,echo命令使用大括号扩展创建字符串 。
Linux grep、egrep使用命令详解grepegrep区别
grep默认不支持扩展 但可以通过-E 选择来支持扩展正则
egrep 支持扩展正则
关于正则与扩展正则的区别可以看我另一篇shell 正则的介绍
文件处理顺序 以行为单位,逐行进行处理
默认只输出与表达式相匹配的文本行
基本用法
- 格式1:egrep [选择] '正则表达式' 文件
- 格式2:前置命令 | egrep [选择] '正则表达式'
? egrep命令工具 (扩展正则命令)
? 常用命令选项
?grep 正则表达式,用来查找过滤文档的工具符号
grep "root" user//在user文档中查找有单词root的行
grep "^root"user//在user文档中查找以单词root开头的行
grep "bash"user//查找空行
grep "^ "user//查找以空格开头的行
grep "[rot]"user//查找字母r或者o或者t
grep "roo[tn]" user//查找root或者roon
grep "[^rot]"user//查找字母r或者o或者t之外的内容
grep "[a-z]"user//查找小写字母
grep "[A-Z]"user//查找大写字母
grep "[a-Z]"user//查找所有字母
grep "[0-9]"user//查找数字
grep "r..t" user//查找以r开头t结尾中间有2个任意字符的单词
grep "r. " user//查找以r开头后面任意字符相当手通配符
grep "ro*" user//查找以r开头后面有或没有字母o的单词,o可以出现任意次
grep"o{1,2}"user//查找o出现1次到2次的行
grep"o{2,3}"user//查找o出现2次到3次的行
grep"o{2}"user//查找o出现2次的行
grep "o{1,} "user//查找o出现1次以及1次以上
grep"(:0){2}"user//查找:0(数字零)连续出现2次的行
扩展正则
egrep"o+"user//查找o出现1次以及1次以上
egrep"o?"user//查找o出现0次或1次
egrep"o{1,2}"user//查找o出现1次到2次的行
egrep"o{2,3}"user//查找o出现2次到3次的行
egrep"o{2}"user//查找o出现2次的行
egrep"o{1,}"user//查找o出现1次以及1次以上

推荐阅读