在 Linux 上查找文件中字符串的 5 种方法

78人浏览   2024-05-03 12:38:37

在您的浏览器上,要在网页上查找特定字符串,您只需要知道“CTRL+F”技巧。

但作为后端或 DevOps 工程师,您必须只在 Linux 终端上处理某些事情,而不是在 GUI 工具上。

不过不用担心,如果你真的掌握了 Linux 技能,你会同意我的观点,即使用命令也比任何 GUI 工具都更有效率。

本文将介绍在 Linux 终端上查找文件中字符串的 5 种便捷有效的方法。

基本上,当您需要在文本文件中查找字符串时,有两种可能的情况:

  1. 您还没有打开文件。
  2. 您已经打开了文件。

对于第一种情况,我们可以使用 Linux 上著名的三种文本处理武器:grepsedawk.

对于第二种情况,我们可以利用lessor的力量vi

在深入细节之前,让我们使用我的诗歌“ The Zen of Writing on Medium ”的草稿版本,这是一个名为 的文件zen_of_medium.txt,作为 5 种方式的示例文件。





文件内容

1. 使用 grep 命令

grep命令是一个直观且易于使用的字符串搜索工具。其基本结构为grep string file_name.

例如,如果我们想在zen_of_medium.txt文件中查找单词“better”的位置。命令和结果如下:



上面的grep命令打印所有包含单词“better”的行。

但是,如果它真的是一个长文本文件,通过上述方法找到结果的确切位置仍然很难。幸运的是,有一个-n选项grep可以打印每行结果的行号:



2. 使用 sed 命令

sed命令是另一个强大的文本处理工具。对于我们的任务,我们可以按如下方式使用它:





当然,该sed命令还可以做进一步的事情,比如找到字符串后删除或替换。这些超出了本文的范围。

3. 使用 awk 脚本

Linux 中有一个命令功能强大到不能称为命令——awk。它实际上是一种用于 Linux 中文本处理的脚本语言。
— Yang(《Linux 中使用 awk 的 8 个层次》)

根据上面的说法,您可以想象该awk语言也可以用于查找字符串。

现在,我们将遵循以下语法awk

awk '模式 {action}' 文件名

在我们的例子中,模式就是“更好”这个词,其作用是打印出每个匹配行的行号和内容。





如上所示,该命令为我们提供了与 and命令awk完全相同的结果。grepsed

4.用less检查文件

如果已经使用该less命令在终端上显示了文件的内容,我们可以使用less.

要使用 搜索字符less,请键入/后跟我们要搜索的字符串,然后按“Enter”

如果匹配的单词很多,我们可以n查找下一个匹配项或N查找上一个匹配项。

5.用vi检查和编辑文件

有时,我们需要在文件中找到字符后对其进行编辑。在这种情况下,vi编辑器是一个不错的选择。

让我们的生活更轻松的是vi查找字符串的语法与less.

  • 键入/后跟字符串,然后按“Enter”。
  • n查找下一个匹配项或N查找上一个匹配项。

相关推荐