15

我有一个令人讨厌的闭源工具,它将特定信息写入其配置文件。如果您随后尝试在其他文件上使用配置,则它会加载旧文件。呃……

幸运的是,配置文件是文本,所以我可以对它们进行版本控制,事实证明,如果只是从文件中删除有问题的行,就不会造成任何伤害。

但是该工具不断将这些行放回原处。因此,每次我想签入配置文件的新版本时,我都必须删除所有包含符号的行openDirFile

我即将构建某种 bash 命令来在每个文件上运行 grep -v ,将结果存储在一个临时文件中,然后删除原始文件并重命名临时文件,但我想知道是否有人知道一个不错的干净解决方案,或者已经编造和调试了类似的调用。

对于额外的功劳,如何在不破坏同一目录(favourite.rc->signals.rc)中的符号链接的情况下做到这一点?

4

2 回答 2

20
sed -i '/openDirFile/d' *.conf

这会删除所有 conf 文件

如果您的 conf 文件位于不同的路径中,您还可以将该行与“find”命令结合使用。

请注意, -i 将“就地”删除。

于 2012-04-18T09:17:41.480 回答
0

这是我想出的 bash-spell:

for i in *.rc ; do TMP=$(mktemp) ; grep -v openDirFile ${i} >${TMP} ; mv ${TMP} ${i} ; done

肯特的回答显然更胜一筹。

于 2012-04-18T09:32:52.683 回答