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
posted @ 2023-11-18 22:55  箫笛  阅读(38)  评论(0编辑  收藏  举报