linux - grep 查找匹配
在文件中查找匹配的字符串或者模式
1. 在单个文件中查找给定的字符串
grep "string" filename
2. 在多个文件中查找指定的字符串
grep "this" demo_*
grep "string" file1 file2 file3
3. -i 选项忽略大小写敏感进行查找
grep -i "string" filename
4. 使用正则表达式进行匹配查找
grep "lines.*empty" demo_file
5. -w 选项匹配完整的单词
grep -iw "is" demo_file
6. -A, -B, -C 显示匹配结果的上下文
-
显示匹配行的后2行
grep -A 2 "string" filename
-
显示匹配行的前2行
grep -B 2 "string" filename
-
显示匹配行的前2行和后2行
grep -C 2 "Example" filename
7. 高亮显示搜索匹配项
grep --color=auto "string" filename
8. 在当前目录以及子目录中查找匹配
grep -r "ramesh" *
grep -r "string" .
9. -v 进行匹配反转,显示不匹配的行
grep -v "string" filename
10. -e 指定多个匹配模式
grep -e "string1" -e "string2" -e "string3" filename
11. -f 将多个模式定义在文件中, 一个模式一行
grep -f pattern_file filename
12. -c 显示匹配的行数
grep -c "string" filename
13. -l 选项显示匹配的文件名列表
grep -l "string" demo_*
14. -o 选项显示匹配的字符串而不是默认匹配的行
grep -o "is.*line" demo_file
15. -n 选项显示匹配的行号
grep -n "go" demo_text
16. -E 使用扩展正则表达式匹配
grep -E "[a-z]+" filename
17. --include 指定搜索文件的范围
`grep -r "string" . --include *.{c,cpp}
18. --exclude 排除某些文件
`grep -r "string" . --exclude "README"
19. --exclude-dir 排除指定的目录
`grep -r "string" . --exclude-dir CVS
20. -q 静默输出,不输出显示内容,后续程序使用$? 判断执行成功与否
grep -q "match_text" filename
if [ $? -eq 0 ]; then
echo "The text exists in the file"
else
echo "Text dose not exist int the file"
fi