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”将是:
- Moon.txt--当“first”一词被“Moon”替换时,它将被保存在“moon.txt”下。
已在文件.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最简单的部分。
编码快乐!