我有许多文件和一组查找和替换文本组合。
例如,我有一组查找文本和替换文本,如下所示,
- 查找 - “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