如要匹配Computer或computer两个单词,可做如下操作:
[Cc]mputer
“.”允许匹配ASCII集中任意字符,或为字母,或为数字。
使用\{\}匹配模式结果出现的次数
匹配字母A出现两次,并以B结尾,操作如下:
A\{2\}B
匹配A至少4次,使用:
A\{4,\}B
如给出出现次数范围,例如A出现2次到4次之间:
A\{2,4\}B
在grep命令中输入字符串参数时,最好将其用双引号括起来。例如:“mystring”。这样做
有两个原因,一是以防被误解为shell命令,二是可以用来查找多个单词组成的字符串,例如:
“jet plane”,如果不用双引号将其括起来,那么单词plane将被误认为是一个文件,查询结果
将返回“文件不存在”的错误信息。
在grep命令中输入字符串参数时,最好将其用双引号括起来。例如:“mystring”。
这样做有两个原因:
一是以防被误解为shell命令,
二是可以用来查找多个单词组成的字符串,例如:“jet plane”,
如果不用双引号将其括起来,那么单词plane将被误认为是一个文件,查询结果将返回“文件不存在”的错误信息。
在调用变量时,也应该使用双引号,诸如:grep "$MYVAR"文件名,如果不这样,将没有返回结果。
在调用模式匹配时,应使用单引号。
使用grep抽取精确匹配的一种更有效方式是在抽取字符串后加\>。假定现在精确抽取48,方法如下:[???????????]
#grep "48\>" data.f
#grep -n "48\>" data.f #显示行号
缺省情况下,grep是大小写敏感的,如要查询大小写不敏感字符串,必须使用-i开关。
使用正则表达式时最好用单引号括起来
假定要抽取代码为484和483的城市位置,
#grep '48[34]' data.f
如果要抽出记录,使其行首不是48,
#grep '^[^48]' data.f
抽取以L开头,以D结尾长度为5个字符的所有代码,可使用下述方法:
#grep 'L...D' data.f
查询所有以5开始以1996或1998结尾的所有记录
#grep '5..199[68]' data.f
第一个字符为任意数字,第二个字符在0到5之间,第三个字符在0到6之间:
#grep '[0-9][0-5][0-6]' data.f
#grep '^[0-9][0-5][0-6]' data.f #以行首开始
抽取包含数字4至少重复出现两次的所有行:
#grep '4\{2,\}' data.f
grep命令加-E参数,这一扩展允许使用扩展模式匹配。
例如,要抽取城市代码为219或216,方法如下:
#grep -E '219|216' data.f
结合使用^和$可查询空行。使用- n参数显示实际行数:
#grep -n '^$' data.f
匹配特殊字符查询有特殊含义的字符,诸如$.'"*[]^|\+?,必须在特定字符前加\。
假设要查询包含“.”的所有行,脚本如下:
#grep '\.' data.f
#grep '\"' data.f
如要查询文件名conftroll.conf(这是一个配置文件),脚本如下:
#grep 'conftroll\.conf' myfile
最多六个小写字符,后跟句点,接着是两个大写字符,
#grep '[a-z]\{1,6\}\.[A-Z]\{1,2\}' filename.deposit
grep中通配符*的使用
#grep 'l.*s' testfile #匹配如"looks"
#grep 'oo*' testfile #匹配如"looks"
在所有文件中查询行尾包含单词device的所有行
#grep 'device$' *
查询目录列表中的目录,方法如下:
#ls -l | grep '^d'
在一个目录中查询不包含目录的所有文件,方法如下:
#ls -l | grep '^[^d]'
要查询其他用户和其他用户组成员有可执行权限的目录集合,方法如下:
#ls -l | grep '^d....x..x'
#ls 列出文件目录(可以含子目录)及文件的完整路径 [1] [2]
1、列出当前目录的文件、文件夹完整路径
ls -1 |awk '{print i$0}' i=`pwd`'/'
2、列出当前目录及子目录的文件、文件夹完整路径
ls -R |awk '{print i$0}' i=`pwd`'/'
2b) 列出当前目录及子目录下的文件夹完整路径
ls -FR | grep /$ | sed "s:^:`pwd`/:"
3、用find实现,好像运行要慢些
find / -name "*.*" -exec ls {} \;
4、递归列出当前目录及子目录名称
ls -FR | grep /$
5、递归列出当前目录及子目录名称,包括相关属性
ls -lR | grep "^d"
# drwxr-xr-x 3 idea idea 4096 Aug 2 2009 images
6、只列出当前目录下的子目录
用ls只列出子目录
ls -d */
#grep空格 [1]
grep搜索带空格的字符串需要使用'\ '来转义空格
用 "\s"
#grep查找tab [1]
其实在linux中要正确匹配tab(退格)符有两种方式
1:用 grep $'\t' 你的文件
2:用 grep '按CTRL+V 键,再按TAB键' 你的文件
#更多详细用法 [1]
grep通配符匹配 grep 匹配次数
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
C++ 模板匹配matchTemplate
C++ 模板匹配matchTemplate
opencv 模版匹配 -
grep查询匹配字符串的个数 linux grep 匹配次数
Linux 给人的印象是黑乎乎的神秘窗口,文本操作和数据处理似乎没有 Windows 窗口界面直观方便。其实Linux 有自己的独特的法宝,称之为 三剑客:grep,awk 和 sed 。你可以用这三件法宝很方便的处理数据 : 查找,分段,修改 ,而这三个功能对应着我们今天的主角:grep,awk,sed。 形象一点比喻,如果把数据比作人群,那么 g
awk 匹配 linux c语 curl代码 lsof |grep delete卡住 sed -i 单引号中嵌套双引号 sed