Liunx基础知识 -- 9 文本操作
正如我在之前的 Linux 教程中多次提到的,Linux 中几乎所有的东西都是一个文件,而且它们通常是文本文件。例如,Linux 中的所有配置文件都是文本文件。要在 Linux 中重新配置应用程序,我们只需打开配置文件,更改文本,重新保存,然后重新启动应用程序,我们的重新配置就会应用。
对于如此多的文本文件,处理文本在管理 Linux 和 Linux 应用程序中变得至关重要。在本教程中,我们将了解一些在 Linux 中处理文本的命令和技术。
出于演示目的,我们将使用来自世界上最好的网络入侵检测系统 (NIDS) Snort 的文件。
第 1 步:cat 那个文件
正如之前教程中所演示的,cat 可能是最基本的文本显示命令。让我们 cat 在 /etc/snort 中找到的 Snort 配置文件。
kali > cat /etc/snort/snort.conf
如您所见,snort.conf 一直显示在我们的屏幕上,直到到达文件末尾。这不是使用此文件的最方便或最实用的方法。
第 2 步:取头部
如果我们只想查看一个文件的开头,我们可以使用 head 命令。默认情况下,此命令显示文件的前 10 行。
kali > head /etc/snort/snort.conf
如果我们想看到多于或少于默认的 10 行,我们可以通过将我们想要的行数(使用 - 开关)放在命令和文件名之间来告诉 head 我们想要看到多少行。
kali > head -20 /etc/snort/snort.conf
在这里我们可以看到只显示了 snort.conf 的前 20 行。
第 3 步:抓住那条尾巴
与 head 命令类似,我们使用 tail 命令查看文件的最后几行。让我们在 snort.conf 上使用它。
kali > tail /etc/snort/snort.conf
请注意,它显示了一些规则文件的最后“包含”,但不是全部。现在让我们看看是否可以通过抓取 snort.conf 的最后 20 行来显示所有“包含”规则。
kali > tail -20 /etc/snort/snort.conf
现在我们可以在一个屏幕上查看几乎所有的规则。
第 4 步:对这些行进行编号
有时——尤其是对于非常长的文件——我们可能希望文件显示有行号。snort.conf 可能就是这种情况,因为它有 600 多行。这样可以更轻松地引用更改并返回到文件中的同一位置。要显示带有行号的文件,我们只需键入
kali > nl /etc/snort/snort.conf
请注意,现在每一行都有一个编号,使引用变得更加容易。
第 5 步:grep
在 cat 之后,grep 可能是使用最广泛的文本操作命令。这是一个过滤命令;换句话说,它使我们能够过滤文件的内容以供显示。例如,如果我们想查看 snort.conf 文件中出现单词“output”的所有实例,我们可以要求 cat 仅显示出现它的那些行,方法是键入:
kali > cat /etc/snort/ snort.conf | grep output
此命令将首先获取 snort.conf,然后将其“管道”(|) 到 grep,它将其作为输入,然后查找出现的单词“输出”并仅显示这些行。Grep 是在 Linux 中工作的强大且必不可少的命令,因为它可以节省我们搜索每个出现的单词或命令的时间。
第6步: sed
sed 命令本质上允许我们搜索单词或文本模式的出现,然后对其进行一些处理。这个名字来自流编辑器的概念,是这两个词的缩写。在其最基本的形式中,sed 的操作类似于 Windows 中的查找和替换功能。让我们使用 grep 在 snort.conf 文件中搜索单词“mysql”。
cat /etc/snort/snort.conf | grep mysql
我们可以看到 grep 命令找到了两次出现的单词 mysql。
我们可以通过键入以下内容来做到这一点:
kali > sed s/mysql/MySQL/g /etc/snort/snort.conf > snort2.conf
这个命令说,“搜索单词 mysql 并在全局范围内用单词 MySQL 替换它(即在文件中找到它的任何地方)。”
cat /etc/snort/snort2.conf | grep MySQL
现在,当我们对 mysql 进行 grep snort2.conf 时,我们发现没有找到任何内容,而当我们对 MySQL 进行 grep 时,我们发现有两次出现 MySQL。
如果我们只想替换单词 mysql 的第一次出现,我们可以省略尾随 g(代表全局),它只会替换第一次出现的地方。
kali > sed s/mysql/MySQL/ snort.conf > snort2.conf
sed 命令也可用于查找和替换单词的任何特定出现。例如,如果我只想替换单词 mysql 的第二次出现,我可以简单地将出现的次数放在命令的末尾,sed 只会将单词“mysql”的第二次出现替换为“MySQL” .
kali > sed s/mysql/MySQL/3 snort.conf > snort2.conf
第 7 步:少即是多
虽然 cat 是显示文件和创建小文件的好工具,但在显示大文件时它肯定有缺点。当我们 cat snort.conf 时。它滚动浏览许多页面,直到结束。不太实用。
为了处理更大的文件,我们还有两个其他实用程序,more 和 less。更多是第一位的,是手册页使用的实用程序。让我们用更多命令打开 snort.conf。
more /etc/snort/snort.conf
请注意,more 仅显示第一页,并在左下角为我们显示显示了多少文件(在本例中为 2%)
要查看其他行或页面,我们可以使用 ENTER 键或 PAGE UP 或 PAGE DN 来移动整个页面。要退出更多,只需键入“q”退出。
less 与 more 非常相似,但具有额外的功能,因此常见的 Linux爱好者打趣道“Less is more”。
让我们用 less 打开 snort.conf。
kali > less /etc/snort/snort.conf
请注意,在屏幕左下方附近,less 突出显示了文件路径。
如果我们点击 / 键,less 将使我们能够在文件中搜索术语。例如,在设置 snort 时,我们需要确定发送输出的方式和位置。如果我们需要找到配置文件的那个部分,我们可以简单地键入;
/output
这将立即将我们带到第一次出现的output并突出显示它。
然后我们可以通过为下一个键入“n”来查找下一个输出。
如您所见,less 将我们带到下一个单词输出的出现位置,突出显示所有搜索词,在本例中,我们直接将我们带到了 snort 的输出部分。多方便啊!
参考链接:https://www.hackers-arise.com/post/2016/12/07/Linux-for-Hackers-Part-9-Text-Manipulation
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~