关于匹配的实例:
统计全部包含“48”字符的行有多少行
grep -c "48" demo.txt
不区分大小写查找“May”全部的行)
grep -i "May" demo.txt
显示匹配字符“48”的行及行号
grep -n "48" demo.txt
显示输出没有字符“48”全部的行)
grep -v "48" demo.txt
显示输出以字符“48”开头,并在字符“48”后是一个tab键所在的行
grep '48[[:blank:]]' demo.txt
显示输出以字符“48”开头,第三个字符是“3”或是“4”的全部的行)
grep "48[34]" demo.txt
显示输出行首不是字符“48”的行)
grep "^[^48]" demo.txt
显示输出第一个字符以“M”或“m”开头,以字符“ay”结束的行)
grep "[Mm]ay" demo.txt
显示输出第一个字符是“K”,第2、3、四是任意字符,第五个字符是“D”所在的行)
grep "K…D" demo.txt
显示输出第一个字符的范围是“A-D”,第二个字符是“9”,第三个字符的是“D”的全部的行
grep "[A-D][9]D" demo.txt
显示第一个字符是3或5,第二三个字符是任意,以1998结尾的全部行
grep "[35]..1998" demo.txt
显示输出字符“4”至少重复出现2次的全部行
grep "4\{2,\}" demo.txt
显示输出字符“9”至少重复出现3次的全部行
grep "9\{3,\}" demo.txt
显示输出字符“9”重复出现的次数在必定范围内,重复出现2次或3次全部行
grep "9\{2,3\}" demo.txt
显示输出空行的行号
grep -n "^$" demo.txt
若是要查询目录列表中的目录 同:ls -d *
ls -l |grep "^d"
在一个目录中查询不包含目录的全部文件
ls -l |grep "^[d]"
查询其余用户和用户组成员有可执行权限的目录集合
ls -l |grpe "^d…..x..x"
假定要抽取代码为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]\{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'