Home grep
Post
Cancel

grep

详细说明参考: man 1 grep ,建议将选项写在前面。

1
2
3
    grep [OPTIONS] PATTERN [FILE...]
    grep [OPTIONS] -e PATTERN ... [FILE...]
    grep [OPTIONS] -f FILE ... [FILE...]

使用正则表达式

使用 -E 参数

grep -E "^---$" ${FILE}

反转匹配模式

正常是显示含有匹配内容的行,可以使用 -v参数反转,显示那些没有匹配内容的行。

忽略大小写

使用 -i参数即可

指定最大match次数

使用 -m NUM 参数,在一个文件匹配到指定次数后就退出。

grep -m 1 "abc" ${FILE}

只匹配第一个

显示行号

使用 -n 参数,如果只需要获得行号,可以配合使用awk工具实现

递归查找文件夹

使用 -r 参数

排除文件夹

使用 --exclude-dir=[GLOB] ,可以添加多个,是支持通配符的!

静默模式

使用 -q, --quiet, --silent 参数,不显示结果,静默退出,适合用在脚本中 Quiet; do not write anything to standard output. Exit immediately with zero status if any match is found, even if an error was detected. Also see the -s or –no-messages option.

仅显示匹配的文件名

适合在查找批量文件时使用,显示其中含有匹配内容的文件名。 使用-l参数,还有一个 -L参数,是相反的效果,显示没有匹配内容的文件名

1
2
grep -l "hello"  ./a.txt ./b.txt ./c/*
grep -l "hello" -r ./*

显示文件中的空行

可以这样使用

1
grep -E "^$" ./a.txt

匹配多个内容

1
2
3
grep -e "contexta" -e "context2" ./xxxfile
grep "contexta\|contextb"  ./xxxfile
grep -E "contexta|contextb" ./xxxfile

注意,使用-E和不使用-e是有差别的,一些字符会转义。

显示匹配的次数

一个文件中有多行匹配内容时,获取匹配的行数。使用-c参数

1
2
grep -c "hello" ./a.txt
1

显示匹配行前后N行

有时找到了匹配行,希望跟着打印匹配行和后面紧跟的几行。

有三个参数,

  • -A NUM:A=after,显示匹配行及后面的n行
  • -B NUM:B=before,显示匹配行及前面的n行
  • -C NUM:C=context,显示匹配行前后的各n行
This post is licensed under CC BY 4.0 by the author.