如何使用Sed查找和替换文件或标准输入中的文本

Sed或streameditor提供了许多有用的动态函数。sed最流行的用例之一是搜索和替换标准输入输出和文本文件中的文本。在本教程中,我们将查看sed中find和replace的各种用例。

null

替代命令

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中查找目录?

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享