grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
匹配字符串
grep
xxx
file_name
grep"xxx"
file_name
在多个文件中查找
grep
"xxx"
file_1 file_2 file_3 …
输出除 xxx 之外的所有行
grep
-v "xxx"
file_name
使用正则表达式
grep
-E "[1-9]+"
file_name
只输出文件中匹配到的部分
grep -E
-o "03-06 14:30"
mysqld.log
统计文件或者文本中包含匹配字符串的行数
grep -E
-c "03-06 14:30"
mysqld.log
输出包含匹配字符串的行号
grep -E
-n "03-06 14:30"
mysqld.log
打印样式匹配所位于的字符或字节偏移
grep -E
-b "03-06 14:30"
mysqld.log
-o, -b 经常配合使用
grep -E
-b -o "03-06 14:30"
mysqld.log
直接使用正则式
以 u 开头的日志
grep ^u mysqld.log
不以 u 开头的日志grep ^[^u] mysqld.log
以"
结尾的日志grep \"$ mysqld.log
其它正则grep 'app\.k.*feedback' k2.access.log
搜索多个文件并查找匹配文本在哪些文件中
grep
-l "text"
file1 file2 file3…
在多级目录中对文本进行递归搜索
grep
"text" . -r -n
忽略匹配样式中的字符大小写
grep
-i "HELLO"
file_name
匹配多项 (|| 的关系)
grep
-E "03-06 14:30"
mysqld.log | grep-i "incorrect"
在grep搜索结果中包括或者排除指定文件
只在目录中所有的.php和.html文件中递归搜索字符
"main()"
grep"main()"
. -r--include='*.php'
--include='*.html'
在搜索结果中排除所有.log文件
grep-E "03-06 14:30"
. -r--exclude='*.log'
打印出匹配文本之前或者之后的行
匹配结果行及之后的3行
grep -i -n "incorrect" -A 3 mysqld.log
匹配结果行及之前的3行grep -i -n "incorrect" -B 3 mysqld.log
匹配结果行及前后的3行grep -i -n "incorrect" -C 3 mysqld.log
注:如果匹配结果有多个,会用"--"
作为各匹配结果之间的分隔符
只显示第1个匹配结果
grep -i -n
-m 1 "incorrect"
-A 3 mysqld.log