首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在修改后查找和替换文件中的字符串

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

Unix & Linux用户
提问于 2020-05-30 17:18:23
回答 2查看 413关注 0票数 0

努力实现以下目标:

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:

代码语言:javascript
运行
复制
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

有人能提个主意吗?

EN

回答 2

Unix & Linux用户

发布于 2020-07-17 13:22:48

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

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

如果您在shell (或shell脚本)中运行此命令,它将用oldstring代替/some/file中的任何地方的newstring

票数 0
EN

Unix & Linux用户

发布于 2020-07-17 14:07:09

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

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

代码语言:javascript
运行
复制
/path/to/file.xml IN_MODIFY,IN_NO_LOOP /bin/sed -i 's+/pub/+/+g' $@

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

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/589987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档