sed 是一个流编辑器。它可以对文件和输入流(如管道)执行基本的文本操作。使用 sed,您可以搜索、查找和替换、插入和删除单词和行。 它支持基本的和扩展的正则表达式,允许您匹配复杂的模式。
sed 有几个版本,它们之间有一些函数上的差异。Macos 使用的是 BSD 版本,而且大多数 Linux 发行版默认都预装了 GNU。下面默认的是 GNU 版本。
sed -i s/SEARCH_REGEX/REPLACEMENT/g INPUTFILE-i 将其输出写入标准输出seds 替代命令,可能是 sed 中使用最多的命令-/分隔符字符。它可以是任何字符,但通常是斜杠(/) 字符SEARCH_REGEX 要搜索的普通字符串或正则表达式REPLACEMENT 替换字符串g 全局替换标志。默认情况下一行一行地读取文件,只更改第一次出现的SEARCH_REGEX,当提供替换标志时,所有出现的情况都将被替换INPUTFILE 要在其上运行命令的文件名最好在参数周围加上引号,这样 shell 元字符就不会扩展。让我看一些示例,说明如何使用 sed 命令搜索文件中的文本,并使用其中一些最常用的选项和标志替换文件中的文本。
XSP3mF正如您可能已经注意到的,在前面的示例中,foobar 字符串中的子字符串 foo 也被替换了。如果这不是想要的行为,请在搜索字符串的两端使用单词边界表达式(\b)。这将确保部分词不匹配。
lCjovE若要使模式匹配不区分大小写,请使用 I 标志。在下面的例子中,我同时使用了 g 和 I 标志:
有时,您希望递归地搜索目录中包含字符串的文件,并替换所有文件中的字符串。这可以通过使用 find 或 grep 等命令递归地查找目录中的文件并将文件名管道化为 sed 来实现。

