流编辑器(SED):基础

2024年 3月 20日 116.0k 0

SED,也称为流编辑器,是一个非常有用的工具。它用于搜索特定的单词或模式,然后对该单词或模式进行某些操作,或者换句话说,对其进行转换。在Windows中,SED也称为“查找”和“替换”功能。SED是Ubuntu自带的,所以不需要安装任何东西;只需开始使用它即可。在本教程中,我们将向您介绍如何使用SED或流编辑器。

“S”号指挥

在SED或流编辑器中最重要的命令是"s"命令。“s”代表替代品。语法如下:

的/regexp/替换/标志

因此,让我们使用一个名为"file.txt"的文件作为示例。下面是"file.txt"的样子,如果你跟踪它:


让我们用一个例子来说明“S”命令是如何工作的:

SED‘S/第一个/月亮/I’file.txt>moon.txt

当给出这样的表达时,它意味着:

    • S—它代表替代品。
    • first—在名为"file.txt"的文件中搜索的单词。
    • “月亮”—“第一个”被“月亮”取代。
    • 代表忽视.我们先忽略这一部分。
    • File.txt-SED将在其中搜索模式或单词的文件。在这种情况下,单词“First”将是:
    • 已在文件.txt中搜索

    • Moon.txt--当“first”一词被“Moon”替换时,它将被保存在“moon.txt”下。

怎么回事SED只在第一个实例中用单词“first”代替“moon”(这意味着如果单词“first”碰巧出现多次,它不会全部替换或多次替换)。它搜索的文件名为“file.txt”,一旦转换或替换完成,它将保存在“moon.txt”下。

这就是它看起来的样子:


请记住把"/"放在需要的地方。如果省略了"/",SED将不接受该命令。

到目前为止,我们只用“遇到”一词代替了“第一次”。现在,假设我们想要将第三行中的单词“line”(多次出现--具体地说是四次)替换为单词“Angel”。

我们如何具体瞄准第三条线?我们使用以下命令:

SED‘3S/Line/Angel/I’file.txt>angel.txt

那么,这里刚刚发生了什么?好的,“3”指定行号。因此,它到了第三条线。然后,在名为“file.txt”的文件中用“line”替换“angel.txt”,并将转换后的文件保存为“angel.txt”。


如果我们想替换或转换行"3"和"4"呢?

Sed‘3,4s/line/Angel/I’file.txt>angel2.txt


注意,在前面的例子中,我们使用了"i"标志来表示ignore。现在,我们使用"g"标志来表示全局。

让我们用一个例子来说明"s"命令是如何工作的:

sed's/line/sun/g 'file.txt> sun. txt

当给出这样的表达时,它意味着:

G代表全球。请记住,在第一个例子中,当我们使用"i"标志时,只有一个替换。既然我们为global添加了一个"g",这意味着到处都是替代品。所以,它不是说第一行,第二行,第三行和最后一行,而是说第一个太阳,第二个太阳,第三个太阳和最后一个太阳。它将整个文件中的字行(各处)替换为单词“sun”。


现在,如果我们想根据其中包含的单词来选择一行呢?好吧,我们可以看到"file.txt"的最后一行有"last"这个词。现在,假设我们想要"This is the last line"。这是最后一句话”。“这是最后一个鬼魂。这是最后一句话”。

我们写如下:

Sed‘/last/S/line/host/’file.txt>.ghost.txt

这里的"last"告诉SED查找包含单词"last"的行,然后在该行内将单词"line"替换为"ghost"。


现在,假设我们想要做相反的事情。假设我们希望没有“last”一词的每一行都将“line”一词更改为“host”。让我们写下以下内容:

请选择‘/最后/!S/行/幽灵/’文件.txt>.ghost 2.txt

正如你在这里看到的,除了最后一行(包含单词“last”)之外的每一行都用单词“line”替换了单词“ghost”。


我们也可以使用行号来实现这一点:

Sed‘3,4!S/行/夜/I’file.txt>night.txt

在这种情况下,第3行和第4行被省略,但每隔一行的单词“line”被单词“night”替换。

多个命令

那么,如果你有多个命令呢?你是宁愿一次一个做,还是一次全部做,以节省自己的时间和工作?

如果我们想把“第一”字改成“白天”,把“第二”字改成“夜”,把“其余”字改成“鬼”,该怎么办呢?我们使用分号来完成此操作。别忘了把分号放在最后!

请注意,你并不一定要把"i"标志或"ignore"标志,但你一定要把斜杠(/)放在转换短语后面。

现在,让我们用一个例子来验证它:

sed's/first/day/;s/second/night/;s/third/ghost/;s/last/ghost/;'file.txt> combination.txt

结论

流编辑器或SED是一种选择单词或模式并对其进行转换的方法,它实际上相当于Windows的"find"和"replace"函数的命令行。SED命令可能会变得非常复杂,但如果你至少知道了基本原理,你已经准备好了!SED实际上是一个功能非常强大的工具。虽然我们不能在一个教程中涵盖所有这些,但我们涵盖了SED的基础知识。本质上,我们学会了如何使用"s"命令转换特定的单词,其中"s"代表替代词。我们可以用单词替换其他单词,选择性地选择一行替换,甚至否定它。无论哪种方式,这都是关于SED最简单的部分。

编码快乐!

相关文章

服务器端口转发,带你了解服务器端口转发
服务器开放端口,服务器开放端口的步骤
产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
如何使用 WinGet 下载 Microsoft Store 应用
百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

发布评论