shell之文本过滤(grep)

shell之文本过滤(grep)

分类: linux shell脚本学习2012-09-14 14:17 588人阅读 评论(0) 收藏 举报

shell正则表达式扩展工具存储

grep(全局正则表达式版本)允许对文本文件进行模式查找。如果找到匹配模式, grep打印包含模式的所有行。grep支持基本正则表达式,也支持其扩展集。

g r e p一般格式为:

grep [选项]基本正则表达式[文件]

这里基本正则表达式可为字符串。如果是字符串的时候请加上“”号,否则容易出错。

常用的g r e p选项有:
-c  只输出匹配行的计数。
-i  不区分大小写(只适用于单字符) 。
-h  查询多文件时不显示文件名。
-l  查询多文件时只输出包含匹配字符的文件名。
-n  显示匹配行及行号。
-s  不显示不存在或无匹配文本的错误信息。
-v  显示不包含匹配文本的所有行。

grep和正则表达式
使用正则表达式使模式匹配加入一些规则,因此可以在抽取信息中加入更多选择。使用正则表达式时最好用单引号括起来,这样可以防止 g r e p中使用的专有模式与一些 s he l l 命令的特殊方式相混淆。

要用好grep这个工具,其实就是要写好正则表达式,所以这里不对grep的所有功能进行实例讲解,只列几个例子,讲解一个正则表达式的写法。

$ ls -l | grep ‘^a‘ 
通过管道过滤ls -l输出的内容,只显示以a开头的行。

$ grep ‘test‘ d* 
显示所有以d开头的文件中包含test的行。

$ grep ‘test‘ aa bb cc 
显示在aa,bb,cc文件中匹配test的行。

$ grep ‘[a-z]/{5/}‘ aa 
显示所有包含每个字符串至少有5个连续小写字符的字符串的行。

$ grep ‘w/(es/)t.*/1‘ aa 
如果west被匹配,则es就被存储到内存中,并标记为1,然后搜索任意个字符(.*),这些字符后面紧跟着另外一个es(/1),找到就显示该行。如果用egrep或grep -E,就不用"/"号进行转义,直接写成‘w(es)t.*/1‘就可以了。

grep正则表达式元字符集(基本集)

锚定行的开始 如:‘^grep‘匹配所有以grep开头的行。


锚定行的结束 如:‘grep$‘匹配所有以grep结尾的行。


匹配一个非换行符的字符 如:‘gr.p‘匹配gr后接一个任意字符,然后是p。


匹配零个或多个先前字符 如:‘*grep‘匹配所有一个或多个空格后紧跟grep的行。 .*一起用代表任意字符。

[] 
匹配一个指定范围内的字符,如‘[Gg]rep‘匹配Grep和grep。

[^] 
匹配一个不在指定范围内的字符,如:‘[^A-FH-Z]rep‘匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。

/(../) 
标记匹配字符,如‘/(love/)‘,love被标记为1。

/< 
锚定单词的开始,如:‘/
/> 
锚定单词的结束,如‘grep/>‘匹配包含以grep结尾的单词的行。

x/{m/} 
重复字符x,m次,如:‘0/{5/}‘匹配包含5个o的行。

x/{m,/} 
重复字符x,至少m次,如:‘o/{5,/}‘匹配至少有5个o的行。

x/{m,n/} 
重复字符x,至少m次,不多于n次,如:‘o/{5,10/}‘匹配5--10个o的行。

/w 
匹配文字和数字字符,也就是[A-Za-z0-9],如:‘G/w*p‘匹配以G后跟零个或多个文字或数字字符,然后是p。

/W 
/w的反置形式,匹配一个或多个非单词字符,如点号句号等。

/b 
单词锁定符,如: ‘/bgrepb/‘只匹配grep。

shell之文本过滤(grep)

时间: 2024-08-06 11:53:16

shell之文本过滤(grep)的相关文章

shell之文本过滤(awk)

shell之文本过滤(awk) 分类: linux shell脚本学习2012-09-19 15:53 1241人阅读 评论(0) 收藏 举报 shell正则表达式脚本任务语言 如果要格式化报文或从一个大的文本文件中抽取数据包,那么awk可以完成这些任务. 为了获取所需信息,文本必须格式化,也就是说要使用域分隔符来划分抽取域,分隔符可以使任意字符. awk语言的最基本功能是在文件或字符串中基于指定规格浏览和抽取信息.awk抽取信息后,才能进行其他文本操作.awk脚本通常用来格式化文本文件中的信息

shell之文本过滤(正则表达式)

shell之文本过滤(正则表达式) 分类: linux shell脚本学习2012-09-14 12:59 213人阅读 评论(0) 收藏 举报 当从一个文件或命令输出中抽取或过滤文本时,可以使用正则表达式(R E) ,正则表达式是一些特殊或不很特殊的字符串模式的集合. ^ 只只匹配行首$ 只只匹配行尾* 只一个单字符后紧跟*,匹配0个或多个此单字符[ ] 只匹配[ ] 内字符.可以是一个单字符,也可以是字符序列.可以使用 -表示[ ]内字符序列范围,如用 [ 1 - 5 ]代替[ 1 2 3

adb shell 命令返回&#39;grep&#39; 不是内部或外部命令,也不是可运行的程序

C:\Users\Vicky>adb shell dumpsys window windows | grep mCurrent'grep' 不是内部或外部命令,也不是可运行的程序或批处理文件. 解决方法:在adb shell 后面的内容加上双引号就不会报错啦 C:\Users\Vicky>adb shell "dumpsys window windows|grep mCurrent" mCurrentFocus=Window{cd554b4 u0 com.alibaba.a

linux学习之shell脚本 ------- 文本过滤

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 今天来看一下shell关于文字过滤的知识,其实最主要的就是正则表达式以及关于文本的一常见的命令. 正则表达式: 一种用来描述文本模式的特殊语法. 由普通字符(例如字符a到z)以及特殊字符(称为元字符,如/.*.?等)组成. 基本元字符集及其含义: 字符 含义 ^ 只匹配行首 $ 只匹配行尾 * 匹配0个或多个单字符 [ ] 只匹配[]内字符,可以是一个单字符,也可以是字符序

shell三剑客之grep

前言 grep怎么出来的? 这就需要我们庖丁解牛了,"g/RE/p"看到没,就是这样"global Regular Expression print"==>"全局查找正则表达式(RE)并且打印结果行." grep家族由命令grep,egrep和fgrep组成.后两者是前者的变体.一个胖了,一个瘦了而已. 使用grep的好处就在于,不需要启动编辑器就可以执行查找操作,也用不着把pattern放在"//"里,使用grep要比

Shell正则表达式之grep、sed、awk实操笔记

最近一直在研究shell脚本这块,刚好闲下来整了下自己手头上比较好的资料中的一些范例,以下是我整理的鸟哥私房菜里面正则表达式里面比较基础的一些语法详解,适合新手查阅. 首先先复制一段范例: 复制代码 代码如下: # vi regular_express.txt ------------------------------- "Open Source" is a good mechanism to develop programs. apple is my favorite food.

shell编程之grep和正则表达式

文本处理工具: linux上文本处理三剑客:    grep:文本过滤工具(模式:pattern);        grep:基本正则表达式,-E,-F         egrep:扩展正则表达式,-G,-F         fgrep:不支持正则表达式,-E,-G     sed:steam editor,流编辑器;文本编辑工具;    awk:linux上的实现为gawk,文本报告生成器(格式化文本);        正则表达式:Regular Expression,REGEXP      

shell脚本中grep时关于变量带双引号的小问题

今天在写一个shell脚本的时候,有一个操作是使用grep命令在一个文件中搜索指定内容.指定内容存放在文件中,使用一个变量去获取文件中内容,再传到grep命令中去. 这段代码如下: for target in `cat content.txt`do     grep $target test.txt >>result.txtdone content.txt文本中的内容为: "域\[2\]" "域\[3\]" "域\[4\]" 因为使用

shell编程之grep命令的使用

大家在学习正则表达式之前,首先要明确一点,并把它牢牢记在心里,那就是: 在linux中,通配符是由shell解释的,而正则表达式则是由命令解释的,不要把二者搞混了.切记!!! 通常有三种文本处理工具/命令:grep.sed.awk,它们三者均可以解释正则.下面我就为大家介绍grep命令的使用方法. 一.使用grep命令搜索文件中的内容 grep和egrep命令能够在一个或多个文件的内容中搜索某一特定的字符模式,也被称为正则表达式(regular expressions).一个模式可以是一个单一的