您是否曾经觉得需要处理日志中的文本以在大量日志中搜索某些内容?你有没有试过在被压缩的日志中搜索?您是否尝试通过先解压缩来搜索?日志文件是否具有您必须从中提取一些文本的模式?

这篇博文介绍了一些有用的命令及其在 Linux 中用于文本处理的用法。

  • 一起查看目录下的所有文本文件。

如果软件组件的文本文件或日志文件被拆分为不同的文件,因为在大型系统中日志文件按小时拆分是很常见的,然后日志按小时/分钟轮换一次。在搜索日志时,您希望查看它们全部聚合在一起,然后搜索而不是遍历每个文件。


cat * | less
or 
cat logs_files* | less

进入全屏模式 退出全屏模式

带有通配符模式的 cat 将对此有所帮助。

但是如果文件被压缩,cat 命令将不起作用?

zoz100003 zcat

使用下面的命令查看所有附加在一起的文本文件,即使文本文件被压缩,这也能工作,它会在内存中解压缩并显示输出文本。


zcat * | less
or 
to view all the log files starting with logs_pattern
zcat logs_pattern* | less

进入全屏模式 退出全屏模式

  • 握把

grep 命令是 Linux 终端环境中最有用的命令之一。名称 grep 代表“全局正则表达式打印”。这意味着您可以使用 grep 来检查它接收到的输入是否与指定的模式匹配

因此,如果您想搜索文件中的特定模式或文本,则可以使用 grep 来查找它。

grep "pattern" file
#if you want to make it search accross all files
cat * | grep "pattern" file
or 
zcat * | grep "pattern" file

进入全屏模式 退出全屏模式

grep 工具不仅用于匹配文件中的模式,还可以用于过滤掉某些模式

grep -v pattern myfile

进入全屏模式 退出全屏模式

告诉 grep 只打印那些与模式不匹配的行。

现在我们已经完成了在文本文件或日志中查找的文本,现在我们想从中提取一些信息?

  • sed 和 awk

虽然很难在一篇博文中涵盖所有不同类型的用法,因为每个命令都需要一篇博文,但我仍然会尝试概述这些命令将如何发挥作用。

sed 是 GNU/Linux 的一个有用的文本处理特性。sed的完整形式是Stream Editor

Unix 提供sed and awk作为两个逐行工作的文本处理实用程序。

sed 程序(流编辑器)适用于基于字符的处理,而 awk 程序(Aho、Weinberger、Kernighan)适用于定界字段处理。

awk '{print $3}' filename

进入全屏模式 退出全屏模式

此命令将仅显示文件名中的第三列

sed -n '/hello/p' file1

进入全屏模式 退出全屏模式

此命令将显示所有包含 hello 的行

sed 's/hello/HELLO/' file1

进入全屏模式 退出全屏模式

此命令将在文件中的所有位置用 HELLO 替换 hello。命令中的 's' 用于替换。

  • tr - 翻译

此命令用于将文件中的字符转换为其他形式,例如压缩重复字符并将其替换为该字符的单次出现或删除字符。

tr -d ',' < file1

进入全屏模式 退出全屏模式

此命令将从文件 file1 中删除所有出现的逗号(“,”)。

tr -d "hello" < file1

进入全屏模式 退出全屏模式

此命令将从文件 fle1 中删除所有出现的任何字符 h 或 e 或 l 或 o。

  • jq

JQ 命令可以以多种不同的方式使用;它可以直接用于 JSON 文件,也可以与其他几个命令结合使用来解释 JSON 数据。

jq 命令在处理可以从 REST API 或服务器日志获取的 JSON 数据时非常强大。

假设 JSON 示例是这样的:

{"users":{"name": "Dhiren","id": "001"}}

进入全屏模式 退出全屏模式

要提取用户的内部地图,我们将使用:

jq '.users' users.json

进入全屏模式 退出全屏模式

要提取名称,我们将使用以下内容:

jq '.users.name' users.json

进入全屏模式 退出全屏模式

这就是今天的全部内容!我是一个 LINUX 爱好者,并且会涵盖更多与 Linux、云计算和软件开发相关的博客。我每天在我的twitter 帐户上发帖。

让我们连接!

✨推特

✨Github

Logo

更多推荐