Unix/Linux 中的 grep 命令参数及示例用法
- 作用
- 语法
- 主要参数
- 示例命令
作用
Grep 筛选器在文件中搜索特定的字符模式,并显示包含该模式的所有行。在文件中搜索的模式称为 正则表达式. (grep 代表正则表达式的全局搜索和打印输出)。
语法
grep-options(参数) pattern(关键词) files(文本文件)
主要参数
-c:只输出匹配模式的行数。
-h:只显示匹配的行,不显示文件名。
-i:忽略匹配时的大小写。
-l:只显示文件名列表。
-n:显示匹配的行及其行号。
-r:显示文件所在目录即路径。
-v:输出所有不匹配的行。
-eexp : 指定该选项的表达式,可以多次使用。
-ffile :指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
-E:将样式为延伸的正则表达式来使用。
-w:匹配整个单词。
-r:明确要求搜索子目录。
-d skip:忽略子目录。
-o:只打印匹配行的匹配部分,每个这样的部分在单独的输出行上。
:忽略正则表达式中特殊字符的原有含义。
[ ]:单个字符,如[A]即A符合要求。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求。
.:所有的单个字符。
*:所有字符,长度可以为0。
-A n: 除了显示符合范本样式的那一行之外,并显示该行之后n行。
-B n: 除了显示符合范本样式的那一行之外,并显示该行之前n行。
-C n: 除了显示符合范本样式的那一行之外,并显示该行之前以及之后n行。
示例命令
- 考虑下面的文件作为输入,键入
cat > geekfile.txt后回车;
$ cat > geekfile.txt
- 输入如下内容并键入回车;
unix is great os. unix is opensource. unix is free os.
learn operating system.
Linux is a family of open-source Unix-like operating systems based on the Linux kernel.
Unix linux which one you choose.
uNix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.
- 在键盘上按下
Ctrl+D(或者键入Control-D),保存文本并回到shell提示符。
1、 -i 忽略匹配时的大小写:选项允许在被检索文件中不敏感地搜索字符串大小写。它匹配“UNIX”、“Unix”、“unix”等单词。
$ grep -i "UNix" geekfile.txt
输出:

2、-c只输出匹配模式的行数: 我们可以找到与给定字符串模式匹配的行数。
$ grep -c "unix" geekfile.txt
输出:

3、-l显示与模式匹配的文件名: 我们可以只显示包含给定字符串模式的文件。
$ grep -l "unix" *
or
$ grep -l "unix" geekfile.txt f1.txt f2.txt f3.txt
输出:


4、-w匹配文件中的整个单词: 默认情况下,grep 匹配给定的字符串/模式,即使它在文件中作为子字符串出现。Grep 的-w选项使它只匹配整个单词。
$ grep -w "unix" geekfile.txt
输出:

5、-o只打印匹配行的匹配部分: 默认情况下,grep 显示具有匹配字符串的整个行。我们可以使用-o 选项使 grep 只显示匹配的字符串。
$ grep -o "unix" geekfile.txt
输出:

6、grep -n 输出时显示行号: 显示匹配行的文件及行号。
$ grep -n "unix" geekfile.txt
输出:

7、-v 反转模式匹配: 可以使用-v 选项显示与指定搜索模式不匹配的行。
$ grep -v "unix" geekfile.txt
输出:

8、^ 匹配以字符串开头的行: ^ 正则表达式模式指定行的开头。可以在 grep 中使用它来匹配以给定字符串或模式开头的行。
$ grep "^unix" geekfile.txt
输出:

9、$匹配以字符串结尾的行: $正则表达式模式指定行的结尾。可以在 grep 中使用它来匹配以给定字符串或模式结尾的行。
$ grep "os.$" geekfile.txt
输出:

10、-e 指定该选项的表达式,可以多次使用:
$ grep –e "unix" –e "linux" –e "open-source" geekfile.txt
输出:

11、 -f file 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
$ cat > pattern.txt
Agarwal
Aggarwal
Agrawal
$ grep –f pattern.txt geekfile.txt
$ grep -f pattern.txt geekfile.txt noSuchFile.txt
输出:

12、从一个文件中打印 n 行: -A 在 结果后 打印搜索行和 n 行, -B 在 结果前 打印搜索行和 n 行, -C 在 结果前后 打印搜索行和 n 行。
- 语法:
$ grep -A[NumberOfLines(n)] [search] [file]
$ grep -B[NumberOfLines(n)] [search] [file]
$ grep -C[NumberOfLines(n)] [search] [file]
- 例子:
$ grep -A1 learn geekfile.txt
- 输出:

13、-r 查找文件所在 目录 即路径:
$ grep –r "linux" ./
输出:

最后
以上就是香蕉御姐最近收集整理的关于Unix/Linux 中的 grep 命令的全部内容,更多相关Unix/Linux内容请搜索靠谱客的其他文章。
发表评论 取消回复