如何查找多行文本并用相应的文本替换?

如何查找多行文本并用相应的文本替换?

我有许多文件和一组查找和替换文本组合。

例如,我有一组查找文本和替换文本,如下所示,

  • 查找 - “margin” 替换为“new_margin”
  • 查找 - “color” 替换为“color_primary”
  • 查找 - “xxx” 替换为“zzzz”
  • 查找 - “rre”替换为“768”

我有近 100 个这样的组合,我需要找到所有“查找文本”并将其替换为相应的替换文本。

我怎样才能轻松地做到这一点?

有什么工具可以做到这一点吗?

答案1

要一次性替换文件内的文本,您可以使用 sed:

sed -i -e 's@margin@new_margin' -e 's@color@color_primary@' -e 's@xxx@zzz@' -e '@rre@768@' /path/to/files/*

-i 选项告诉 sed 对文件进行修改但不打印

-e 告诉 sed 有更多字符串需要查找和替换

s@ 表示 '@' 是 string_to_find 和 replacement_string 的分隔符

最新是文件所在的路径,如果它们都在一个位置,您可以执行此命令一次。

!!!在使用 sed 直接修改文件之前,务必先对文件进行备份!!!

更新

感谢@steeldriver 在评论中说不要用 sed 修改源文件,并在 -i 选项中添加后缀

-i[后缀], --in-place[=后缀]

IE

sed -i_edited 's@margin@new_margin' /path/to/files/examplefile

将导致修改后的新文件名为examplefile_edited

相关内容