Sed或streameditor提供了许多有用的动态函数。sed最流行的用例之一是搜索和替换标准输入输出和文本文件中的文本。在本教程中,我们将查看sed中find和replace的各种用例。
替代命令
Sed有不同的动词或命令来操作给定的文件或标准输入行。替代或 s
是最流行的sed命令之一。
语法
sed substitute命令的语法如下所示。
sed 'PATTERNs/OLD/NEW/FLAGS' FILENAME
-
PATTERN
用于指定替换命令的行为,如一对三。 -
s
是替代命令 -
OLD
是我们正在搜索的术语,可能是正则表达式 -
NEW
是我们要说的话 -
FLAGS
用于设置有关sed的设置 -
FILENAME
如果我们提供标准输入的文本,则为可选
代词一次
我们可以用简单的 s/ /
语法。在本例中,我们将更改 linux
进入之内 poftut
在文件中 sites.txt
. 输出将被打印为标准输出,并且不会发生任何更改 sites.txt
$ sed 's/linux/poftut' sites.txt
替换所有单词
在前面的示例中,我们只有一个匹配项。如果我们需要改变给定术语的所有出现,我们应该使用 g
旗帜。在本例中,我们将更改 linux
到 poftut
在文件中 sites.txt
并打印到终端。
$ sed 's/linux/poftut/g' sites.txt
只替换第二个出现的单词
另一个有用的替代用例是改变给定的周期匹配。在本例中,我们将更改2的每一次出现 linux
具有 poftut
在文件中 sites.txt
并将输出打印到shell。我们会把 2
作为标志,表示第二次发生的变化
$ sed 's/linux/poftut/g' sites.txt
将输出写入文件
到目前为止,默认情况下,我们已经将打印输出输出到shell。我们还可以将更改写入新文件。我们将把输出重定向到名为 sites2.txt
$ sed 's/linux/poftut/g' sites.txt > sites2.txt
就地更换
我们也可以替换给定的搜索。这会将更改写入给定的源文件。我们将使用 -i
选项。
$ sed -i 's/linux/poftut/g' sites.txt
在多个文件中查找和替换
到目前为止,我们只使用了一个文件。我们可能需要在多个文件中查找和替换。我们可以用glob指定文件 *
根据他们的名字或分机。在本例中,我们将使替换所有文件名以 sites
结束于 .txt
$ sed -i 's/linux/poftut/g' sites*.txt
仅当行与给定模式匹配时才替换
我们可以为比赛设置一些条件并替换。我们可以在当前行中查找其他模式以查找和替换。在本例中,我们将更改具有数字的行 1
在哪里可以找到 linux
术语和集合 poftut
在文件中 sites.txt
并打印到控制台。
$ sed '/1/s/linux/poftut/g' sites.txt
将DOS换行符回车/换行符转换为Unix格式
我们可以用下面的语句转换Windows行结束符 sed
脚本。正如我们所知,windows行结束提供回车和换行。
$ sed 's/.$//' sites.txt
相关文章: 如何在Linux中查找目录?