侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux fgrep命令教程:如何在文件中搜索固定的字符串(附实例)

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选项可以一起使用,这样可以显示不完全匹配的行。
0

评论区