regex - 如何在我的整个系统中进行查找和替换?

标签 regex linux bash sed grep

我想运行一个查询或脚本,它首先在我系统上的每个 .php 文件中搜索字符串 strawberry。如果在任何地方都找到该字符串,包含它的整行 应替换为字符串 pineapple。我只能访问 bash,不能访问 Ruby/Python/更灵活的语言。

我确信有办法做到这一点,但我想不出来。我什至不知道启动它的 grep 命令... grep -Rl "strawberry". 似乎返回目录中的每个文件,即使是那些不包含字符串 '草莓'。

最佳答案

您并不是真的想要,而且可能没有任何地方的写入权限。

find / -type f -name '*.php' -exec sed -i 's/.*strawberry.*/pineapple/' {} \;

如果您正在尝试清除恶意软件感染或入侵,正确的方法是让您的站点离线、修复攻击向量、强化您的系统、审核您的脚本,然后恢复其余部分来自已知良好的备份

关于regex - 如何在我的整个系统中进行查找和替换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25459013/

相关文章:

regex - jmeter 从响应数据中获取值

linux - Linux 中的 runjags 摘要

linux - 列出单词完成的命令

linux - 从脚本内部确定解释器

java - 从 Azure 上的进程运行时 Linux 设置 -x

regex - 正则表达式 - 我需要使用正则表达式匹配路径中的最后一个反斜杠实例

regex - 在 lua 5.1 中使用 string.gmatch 拆分字符串时包含空匹配

linux - Bash 脚本 cd 命令截断目录名称

regex - 珀尔 : How to replace a _[0-9] with a comma in perl or any language

linux - 如何在 bash 中的文件夹中的每个文件的开头添加一个字符串?