grep使用总结
1.grep 用法: grep [option] 匹配正则表达式 file command | grep [option] 匹配正则表达式 2.常用选项:
-c 只输出匹配行的计数。
-i 不区分大小写(只适用于单字符),即取消大小写敏感 -h 查询多文件时不显示文件名。 -l 查询多文件时只输出包含匹配字符的文件名。 -n显示匹配行及行号。 -s 不显示不存在或无匹配文本的错误信息。 -v 显示不包含匹配文本的所有行。
-e 匹配多个模式 或的关系 grep -e "abc" -e "xyz" ==> grep -E "abc|xyz" ==> egrep "abc|xyz"
3.查询多个文件(可以使用正则): grep 'abc' * grep 'abc'*afile 4.精确匹配(在关键词后面添加 &;: grep'abc&;'file grep -w "abc" 5.正则表达式:最好使用单引号括起来 在模式匹配中使用正则表达式,可以使grep的使用更加丰富,注意:使用正则表达式最好用单引号‘ ’,这样可以防止grep中使用的专有模式与一些shell命令相混淆。 5-1 [ ] 的使用: 指定范围 ‘48[345]',48[3-5], 48[1,3,5] ^ 在正则字串里面代码行首,在[ ]里面代表不包含 eg: 行首不是4或者8 grep '^[^48]' file 大小写不敏感: grep -i 'sept' file 等价于 grep '[sS]ept' file 匹配任意字符: grep 'K...D' file ----匹配所有以K开头,以D结尾,5个字符长度 (. 代表任何一个字符,?代表0个或1个,*代表任意个) grep '[A-Z]...D' file ----所有以大写字母开头,以D结尾,5个字符长度 grep '5..199[6,8]' file ---所有以5开头,以1996或者1998结尾 grep '[0-9][0-5[0-6]' file ---获取城市代码,必须要学会使用[ ]抽取信息,同理电话号码,身份证号,学号等等都可以融会贯通 5-2模式的出现几率: grep '9{2,}' file ---抽取包含数字4至少重复出现2次的所有行eg:1999,1998,, 使用{2} --2次,{2,5} 2-5次均可, {2,} --2次以上 ,{,2} --不超过2次 5-3. grep过滤两个多多个关键字,用到了 与 和 或 | , 这需要借助 -E 选项,或者直接使用egrep grep -E '123|abc' filename// 找出文件(filename)中包含123或者包含abc的行 5-3 空行的查询: grep -c '^$' file ---查询空行数目 +++++++++++++++++++++++++++++++++++++++++++++++==
5-4 匹配特殊字符: 询有特殊含义的字符,诸如$ . ' " * [] ^ | + ?,必须在特定字符前加。 grep '.' file grep '"' file grep 'conftroll.conf' myfile -查询配置文件controll.conf 5-5 查询格式化文件名: 使用正则表达式可匹配任意文件名。系统中对文本文件有其标准的命名格式。一般最多六个小写字符,后跟句点,接着是两个大写字符。 grep '^[a-z]{1,6}.[A-Z]{1,2}' filename 5-6 查询ip地址: 要查看n n n . n n n网络地址,如果忘了第二部分中的其余部分,只知有两个句点,例如n n n . n n . .。要抽取其中所有nnn.nnn IP地址,使用[ 0 - 9 ] { 3 } . [ 0 - 0 { 3 } 。含义是任意数字出现3次,后跟句点,接着是任意数字出现3次,后跟句点。 grep '[0-9]{3}.[0-9]{3}.' (没有考虑范围,需要再重写) 6. 类名: g r e p允许使用国际字符模式匹配或匹配模式的类名形式。
[ [ : u p p e r : ] ] [ A - Z ] [ [ : a l n u m : ] ] [ 0 - 9 a - zA-Z]
[ [ : l o w e r : ] ] [ a - z ] [ [ : s p a c e : ] ] 空格或t a b键 [ [ : d i g i t : ] ] [ 0 - 9 ] [ [ : a l p h a : ] ] [ a - z A - Z ]
CODE:
$grep '5[[:upper:]][[:upper]]' data.f --取以5开头,后跟至少两个大写字母:
CODE:
grep '[[:upper:]][[:upper:]][P,D]' data.f ---取以P或D结尾的所有产品代码:
总之,grep来查询筛选出满足条件的行,主要依赖于正则表达式的强大,灵活使用[ ]界定范围, * ? . 的匹配格式化,^ $界定,{n,m}重复次数,当然还有(n,m)元组的使用, 还有零宽断言,贪婪与懒惰,平衡组与递归一些复杂的用法,在30分钟学会正则表达式一文中,可以深入学习一下,http://see.xidian.edu.cn/cpp/html/1402.html,上面一些例子可以直接拿来用的。。正则表达式在一些非编译类语言中,在各种脚本语言中都使用广泛,规则都是一样的。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |