Linux fgrep命令介绍
fgrep
(全称:Fixed Global Regular Expression Print)是一个在文件中搜索固定字符串的过滤器。这个命令在你需要搜索包含大量正则表达式元字符(如“^”、“$”等)的字符串时非常有用。
Linux fgrep命令适用的Linux版本
fgrep
命令在大多数Linux发行版中都可以使用,包括但不限于Debian、Ubuntu、Alpine、Arch Linux、Kali Linux、RedHat/CentOS、Fedora和Raspbian。如果在某些Linux发行版中无法使用fgrep
命令,通常是因为没有安装相应的软件包。在这种情况下,可以通过包管理器(如apt、yum或dnf)来安装。例如,在Debian或Ubuntu上,可以使用以下命令来安装:
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install grep
在RedHat/CentOS 7上,可以使用以下命令来安装:
[linux@bashcommandnotfound.cn ~]$ sudo yum install grep
在RedHat/CentOS 8或Fedora上,可以使用以下命令来安装:
[linux@bashcommandnotfound.cn ~]$ sudo dnf install grep
Linux fgrep命令的基本语法
fgrep
命令的基本语法如下:
fgrep [options] [ -e pattern_list] [pattern] [file]
这里,options
是命令选项,-e pattern_list
是要搜索的字符串列表,pattern
是要搜索的字符串,file
是要搜索的文件。如果没有指定文件,fgrep
命令将从标准输入读取数据。
Linux fgrep命令的常用选项或参数说明
以下是fgrep
命令的一些常用选项:
选项 | 说明 |
---|---|
-c | 只打印包含匹配行的计数 |
-h | 显示匹配的行 |
-i | 在比较时忽略大小写 |
-l | 打印匹配行的文件名 |
-n | 在每行前面加上其在文件中的行号(第一行是1) |
-s | 只显示错误消息 |
-v | 打印所有不包含匹配模式的行 |
-x | 只打印完全匹配的行 |
-e pattern_list | 搜索pattern-list中的字符串 |
-f pattern-file | 从pattern-file中获取模式列表 |
Linux fgrep命令实例详解
下面是一些fgrep
命令的使用实例:
实例1:使用-c选项
使用-c选项可以找出文件中匹配给定字符串的行数。例如:
[linux@bashcommandnotfound.cn ~]$ fgrep -c "usin.g" para
输出:
1
这表示在文件para
中,有1行包含字符串"usin.g"。
实例2:使用-h选项
使用-h选项可以显示匹配的行。例如:
[linux@bashcommandnotfound.cn ~]$ fgrep -h "usin.g" para
输出:
Hi, @re you usin.g geeks*forgeeks for learni\\ng computer science con/cepts.
这表示在文件para
中,这行包含字符串"usin.g"。
实例3:使用-i选项
使用-i选项可以执行不区分大小写的搜索。它会匹配诸如"geeksforgeeks"和"Geeksforgeeks"这样的单词。例如:
[linux@bashcommandnotfound.cn ~]$ fgrep -i "geeks*forgeeks" para
输出:
Hi, @re you usin.g geeks*forgeeks for learni\\ng computer science con/cepts.
Geeks*forgeeks is best for learni\\ng.
这表示在文件para
中,这两行都包含字符串"geeks*forgeeks"。
实例4:使用-l选项
使用-l选项可以打印出包含匹配行的文件名。例如:
[linux@bashcommandnotfound.cn ~]$ fgrep -l "geeks*forgeeks" para1 para2
输出:
para1
这表示在文件para1
中,存在包含字符串"geeks*forgeeks"的行。
实例5:使用-n选项
使用-n选项可以在每行前面加上其在文件中的行号。例如:
[linux@bashcommandnotfound.cn ~]$ fgrep -n "geeks*forgeeks" para
输出:
1:Hi, @re you usin.g geeks*forgeeks for learni\\ng computer science con/cepts.
3:Geeks*forgeeks is best for learni\\ng.
这表示在文件para
中,第1行和第3行都包含字符串"geeks*forgeeks"。
实例6:使用-s选项
使用-s选项可以只显示错误消息。例如:
[linux@bashcommandnotfound.cn ~]$ fgrep -s "geeks*forgeeks" para
如果文件para
不存在,那么这个命令不会输出任何内容。
实例7:使用-v选项
使用-v选项可以打印所有不包含匹配模式的行。例如:
[linux@bashcommandnotfound.cn ~]$ fgrep -v "geeks*forgeeks" para
输出:
This is a test line.
这表示在文件para
中,这行不包含字符串"geeks*forgeeks"。
Linux fgrep命令的注意事项
fgrep
命令将模式视为固定字符串列表,而不是正则表达式。- 如果你在某个Linux发行版中无法使用
fgrep
命令,可能是因为没有安装相应的软件包。在这种情况下,你可以尝试使用包管理器(如apt、yum或dnf)来安装。 - 如果你在使用
fgrep
命令时遇到了"bash: fgrep: command not found"的错误,你可以按照上面的方法来安装fgrep
命令。
Linux fgrep相关命令
以下是一些与fgrep
命令相关的命令: