在带有动态部分的bash脚本中搜索/替换[关闭]

Posted

技术标签:

【中文标题】在带有动态部分的bash脚本中搜索/替换[关闭]【英文标题】:Search / replace in bash script with dynamic part [closed] 【发布时间】:2021-10-17 15:13:26 【问题描述】:

我正在编写一个 bash 脚本,我想编辑一个 php 配置文件,找到一个字符串并用另一个替换。

困难的部分是我希望这个搜索/替换是动态的。 这是一个例子:

define('APP_VERSION', '1.0.31');

目标是用另一个版本号替换 1.0.31。

我怎样才能做到这一点?用sed试过了,但是不能隔离版本号部分(因为不总是一样的,所以不能直接搜索1.0.31)

谢谢

【问题讨论】:

当你说replace 1.0.31 by another version number时——你是提前知道新版本号还是需要根据你在文件中找到的任何版本号来计算它(例如加1)? 请说明以define('APP_VERSION', 开头的行是否是整个PHP配置文件中唯一的行。 【参考方案1】:

正则表达式的重点是匹配非静态文本。要将任何版本号替换为 123 使用

sed "s/define('APP_VERSION', *'[^']*')/define('APP_VERSION', '123')/"

【讨论】:

以上是关于在带有动态部分的bash脚本中搜索/替换[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 bash 脚本中使用 sed 替换多行模式

Bash:从脚本中查找并替换文本

如何查找多个文件、检查重复文件并用 bash、sed 脚本替换

Bash 递归替换名称上的许多空格

仅使用 netstat 的网络带宽利用率 bash 脚本 [关闭]

如何使用sed搜索和替换]、[? [关闭]