Linux fgrep命令介绍
fgrep是一个Linux命令,它用于在文件中搜索固定的字符串。它是grep命令的一个变体,它不支持正则表达式,而是直接匹配字符串。fgrep命令使用了一种快速和紧凑的算法。在fgrep命令中,$, *, [, |, (, ), 和 \等字符被解释为字面意义,而不是正则表达式的元字符。因为这些字符对于shell有特殊的含义,所以整个字符串必须用单引号('...')括起来。如果没有指定文件,fgrep命令会从标准输入中读取数据。通常,每个匹配的行都会被复制到标准输出。如果有多个输入文件,匹配的行前面会显示文件名。
Linux fgrep命令适用的Linux版本
Linux fgrep命令是一个标准的Linux命令,Linux fgrep命令可以在多数Linux发行版(如Debian、Ubuntu、Alpine、Arch Linux、Kali Linux、RedHat/CentOS、Fedora、Raspbian)的主要终端命令解释器(包括bash、zsh、csh、ksh、fish、tcsh)中使用。如果你的系统中没有安装fgrep命令,你可以使用以下命令来安装它:
- 对于基于Debian的系统,如Ubuntu,你可以使用apt命令:
[linux@bashcommandnotfound.cn ~]$ sudo apt update
[linux@bashcommandnotfound.cn ~]$ sudo apt install grep
- 对于基于Red Hat的系统,如CentOS,你可以使用yum或dnf命令:
[linux@bashcommandnotfound.cn ~]$ sudo yum update
[linux@bashcommandnotfound.cn ~]$ sudo yum install grep
或者
[linux@bashcommandnotfound.cn ~]$ sudo dnf update
[linux@bashcommandnotfound.cn ~]$ sudo dnf install grep
Linux fgrep命令的基本语法
fgrep命令的语法格式如下:
fgrep [选项] [ -e pattern_list] [pattern] [file]
其中,选项是一些用于控制fgrep命令行为的参数,pattern是要搜索的字符串,file是要搜索的文件。如果没有指定file,fgrep命令会从标准输入中读取数据。如果没有指定pattern,fgrep命令会从-e选项后面的pattern_list中读取字符串。如果既没有指定pattern,也没有指定-e选项,fgrep命令会报错。
Linux fgrep命令的常用选项说明
fgrep命令有很多选项,下面列出了一些常用的选项:
选项 | 说明 |
---|---|
-c | 只显示匹配的行数 |
-h | 在多个文件中搜索时,不显示文件名 |
-i | 忽略大小写 |
-l | 只显示包含匹配行的文件名 |
-n | 在每个匹配行前面显示行号 |
-s | 只显示错误信息 |
-v | 显示不匹配的行 |
-x | 只显示完全匹配的行 |
-y | 同-i选项 |
-e pattern_list | 从pattern_list中读取要搜索的字符串 |
-f pattern_file | 从pattern_file中读取要搜索的字符串 |
Linux fgrep命令的实例
下面是一些使用fgrep命令的实例:
- 在当前目录下的所有文件中搜索字符串"hello",并显示匹配的行和文件名:
[linux@bashcommandnotfound.cn ~]$ fgrep hello *
- 在文件test.txt中搜索字符串"world",并忽略大小写:
[linux@bashcommandnotfound.cn ~]$ fgrep -i world test.txt
- 在文件test.txt中搜索字符串"hello"和"world",并显示匹配的行数:
[linux@bashcommandnotfound.cn ~]$ fgrep -c -e hello -e world test.txt
- 在文件test.txt中搜索字符串"hello",并显示不匹配的行:
[linux@bashcommandnotfound.cn ~]$ fgrep -v hello test.txt
- 在文件test.txt中搜索字符串"hello",并只显示完全匹配的行:
[linux@bashcommandnotfound.cn ~]$ fgrep -x hello test.txt
- 在文件test.txt和test2.txt中搜索字符串"hello",并只显示包含匹配行的文件名:
[linux@bashcommandnotfound.cn ~]$ fgrep -l hello test.txt test2.txt
- 在文件test.txt中搜索字符串"hello",并在每个匹配行前面显示行号:
[linux@bashcommandnotfound.cn ~]$ fgrep -n hello test.txt
- 在文件test.txt中搜索字符串"hello",并使用tee命令将输出保存到文件result.txt中:
[linux@bashcommandnotfound.cn ~]$ fgrep hello test.txt | tee result.txt
- 在文件test.txt中搜索字符串"hello",并使用sed命令将匹配的字符串替换为"hi":
[linux@bashcommandnotfound.cn ~]$ fgrep hello test.txt | sed 's/hello/hi/g'
- 在文件test.txt中搜索字符串"hello",并使用awk命令将匹配的行的第一个单词打印出来:
[linux@bashcommandnotfound.cn ~]$ fgrep hello test.txt | awk '{print $1}'
- 在文件test.txt中搜索字符串"hello",并使用sort命令将匹配的行按字母顺序排序:
[linux@bashcommandnotfound.cn ~]$ fgrep hello test.txt | sort
- 在文件test.txt中搜索字符串"hello",并使用cut命令将匹配的行的第一个字符打印出来:
[linux@bashcommandnotfound.cn ~]$ fgrep hello test.txt | cut -c1
- 在文件test.txt中搜索字符串"hello",并使用diff命令将匹配的行和文件test2.txt中的内容进行比较:
[linux@bashcommandnotfound.cn ~]$ fgrep hello test.txt | diff - test2.txt
- 在文件test.txt中搜索字符串"hello",并使用cmp命令检查匹配的行和文件test2.txt中的内容是否相同:
[linux@bashcommandnotfound.cn ~]$ fgrep hello test.txt | cmp - test2.txt
- 在文件test.txt中搜索字符串"hello",并使用comm命令将匹配的行和文件test2.txt中的内容进行比较,并显示三列输出:
[linux@bashcommandnotfound.cn ~]$ fgrep hello test.txt | comm - test2.txt
Linux fgrep命令的注意事项
- fgrep命令不支持正则表达式,如果要使用正则表达式,可以使用grep或egrep命令。
- fgrep命令中的字符串必须用单引号括起来,否则可能会被shell解释为特殊字符。
- fgrep命令的-e选项和-f选项可以同时使用,这样可以从多个来源读取要搜索的字符串。
- fgrep命令的-v选项和-x选项可以一起使用,这样可以显示不完全匹配的行。
评论区