grep命令 linux
grep(global regular expression print,全局正则表达式打印,g代表global,re代表正则表达式,p代表print)。
grep工具能够使用正则表达式,在一个或者多个文件中搜索,确定是否包含给定的字符串,并将匹配的行打印出来。该程序只显示包含所查找的字符串的文件行,不修改搜索到的文件。
grep格式
grep [options] pattern [file-list]
其中pattern可以是一个简单的字符串,也可以是另一种形式的正则表达式。
grep根据指定的options选项,采取不同的动作,查找包含与pattern匹配的字符串的行。
options选项
不带任何选项的grep把找到的包含匹配pattern的行发送到标准输出。当在命令行上指定多个文件时,grep将在显示的每行前带上文件名和冒号。
选项
-c --count 只显示每个文件中包含匹配模式的行数
-C n --context=n 对匹配的每一行显示n行上下文
-I --ignore-case 使得正则表达式中的小写字母可以匹配文件中的大写
-m n --max-count=n 显示包含匹配模式的n行后停止读取输入
-n --line-number 在每行前显示行号,文件不必包含行号
-v --invert-match 显示不包含匹配模式的行
-h --no-filename 当搜索多个文件时,在每行的开始不显示文件名
-r --recursive 递归的搜索file-list中的目录,处理目录中的文件
-i --files-with-matches 仅显示包含一个或多个匹配模式的文件名,
每个文件名只显示一次,即使包含多个匹配也不例外
-f file --file=file 读取文件file,该文件中每一行都包含一个模式,
从输入中查找匹配每个模式的行
-s --no-message 如果file-list中文件不存在或不可读,不显示错误信息
-x --line-regexp pattern仅匹配整行
-w --word-regexp 使用该选项,pattern必须与整个字匹配。当要搜索某个字是文件中
另一个字的子串时有用
pattern中常用选项
\ 忽略正则表达式中特殊字符的原有含义。
^ 匹配正则表达式的开始行。
$ 匹配正则表达式的结束行。
\< 从匹配正则表达 式的行开始。
\> 到匹配正则表达式的行结束。
[ ] 单个字符,如[A]即A符合要求 。
[ - ] 范围,如[A-Z],即A、B、C一直到Z都符合要求 。
. 所有的单个字符。
* 有字符,长度可以为0
举例
grep "^+" tem.log | grep -v "^+++"
把tem.log文件中开头包含+并且不包含+++的挑选出来
grep "sort" *.doc #见文件名的匹配
多个文件查询
grep -c "48" data.doc #输出文档中含有48字符的行数
行匹配:输出匹配行的计数
grep -n "48" data.doc #显示所有匹配48的行和行号
显示匹配行和行数
grep -vn "48" data.doc #输出所有不包含48的行
显示非匹配的行
grep -vn "48" data.doc #输出所有不包含48的行
显示非匹配的行
grep -i "ab" data.doc #输出所有含有ab或Ab的字符串的行
大小写敏感