努力实现以下目标:
1)新文件以相同的文件名上载,但具有新的内容
2)事件触发器,该触发器检查文件中的特定字符串并替换它们。
3)可以将文件保存在适当的位置(可能是一个循环),或者在修改后创建文件的新副本。
对于试图使用direvent和incron的事件捕获,两者都可以捕获该事件,但是启动命令以查找和替换该文件中的字符串时会出现问题。
对于查找和替换功能,尝试使用sed和perl。
SED+INCRON:/path to file folder/ IN_MODIFY /bin/sed -i 's+/pub/+/+g' filename.xml
DIREVENT+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
有人能提个主意吗?
发布于 2020-07-17 05:22:48
我不太明白你的问题,但我想你想要的是:
perl -i -pe 's/oldstring/newstring/g' /some/file
如果您在shell (或shell脚本)中运行此命令,它将用oldstring
代替/some/file
中的任何地方的newstring
发布于 2020-07-17 06:07:09
注意,在您的代码中,您搜索"path to file文件夹“,然后在sed/perl命令中忘记该路径(在这种情况下不确定相对路径,但在我的测试中它默认为/
)。
为什么不直接使用incron监视文件本身并使用
/path/to/file.xml IN_MODIFY,IN_NO_LOOP /bin/sed -i 's+/pub/+/+g' $@
注意:IN_NO_LOOP
是为了防止sed命令在修改时触发相同的事件。
https://unix.stackexchange.com/questions/589987
复制