概述
Unix/Linux 中的 grep 命令参数及示例用法
- 作用
- 语法
- 主要参数
- 示例命令
作用
Grep 筛选器在文件中搜索特定的字符模式,并显示包含该模式的所有行。在文件中搜索的模式称为 正则表达式. (grep 代表正则表达式的全局搜索和打印输出)。
语法
grep
-options(参数) pattern(关键词) files(文本文件)
主要参数
-c
:只输出匹配模式的行数。
-h
:只显示匹配的行,不显示文件名。
-i
:忽略匹配时的大小写。
-l
:只显示文件名列表。
-n
:显示匹配的行及其行号。
-r
:显示文件所在目录即路径。
-v
:输出所有不匹配的行。
-e
exp : 指定该选项的表达式,可以多次使用。
-f
file :指定规则文件,其内容含有一个或多个规则样式,让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 中的 grep 命令所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复