修改文件后如何查找和替换文件中的字符串

修改文件后如何查找和替换文件中的字符串

试图实现以下目标:

1)新文件以相同的文件名上传,但内容新

2) 检查文件中特定字符串并替换它们的事件触发器

3) 文件可以就地保存(可能是循环)或通过修改创建文件的新副本。

对于尝试使用 dievent 和 incron 的事件捕获,两者都可以捕获事件,但是启动命令来查找和替换该文件中的字符串时存在问题。

对于查找和替换功能,尝试使用 sed 和 perl。

SED+INCRON:/path to file folder/ IN_MODIFY /bin/sed -i 's+/pub/+/+g' filename.xml

驱动+PERL:

direvent.conf content
watcher {
    path /path to file/;
    event write;
    command "/usr/bin/perl script.pl";
}

script.pl content
#!/usr/bin/perl
use strict;
use warnings;

perl -pe 's/old_string/new_string' filename.xml

有人可以提出一个想法吗?

答案1

我不太明白你的问题,但我认为你想要的是:

perl -i -pe 's/oldstring/newstring/g' /some/file

如果您在 shell(或 shellscript)中运行此命令,它将替换oldstringnewstring/some/file

答案2

请注意,在您的代码中,您搜索“文件夹路径”,但随后忘记了 sed/perl 命令中的该路径(不确定这种情况下的相对路径,但在我的测试中它默认为/)。

为什么不只使用 incron 监视文件本身并使用

/path/to/file.xml IN_MODIFY,IN_NO_LOOP /bin/sed -i 's+/pub/+/+g' $@

注意:IN_NO_LOOP是为了防止sed命令在修改时触发相同的事件。

相关内容