【发布时间】:2021-07-08 18:17:42
【问题描述】:
我目前正在为一个项目部署一个新的 webapp (GEM)。更新用户数据时,它没有正确搜索字符串并在 apache 的 workers.properties 文件中替换它。我用来执行此操作的当前脚本是:
sed -i "s/worker.list\=GMA,jkstatus/worker.list\=GMA,ETL,common-resource,GAA,authzmanager,Launch,jkstatus/g" ${INSTALL_BASE}/${APACHE_DIR}/conf/jk/workers.properties
workers.properties 中需要更改的当前代码行如下:
worker.list=GMA,ETL,common-resource,GAA,authzmanager,Launch,jkstatus
我试图做出的改变是这样的:
worker.list=GMA,ETL,common-resource,GAA,GEM,authzmanager,Launch,jkstatus
搜索中有什么不正确的地方吗?它正在更改文件中的其他内容,因此它绝对可以访问workers.properties。对此的任何帮助表示赞赏。
编辑: 我已经确认它不喜欢 GMA,jkstatus 之间的逗号,表示从 GMA 开始并以 jkstatus 结束:
\=GMA,jkstatus/ 那么如何告诉 sed 在 jkstatus 上停止而不是使用逗号?
【问题讨论】:
-
也许
sed -i 's/worker\.list=.*/worker.list=GMA,ETL,common-resource,GAA,authzmanager,Launch,jkstatus/' ${INSTALL_BASE}/${APACHE_DIR}/conf/jk/workers.properties可以吗? -
嘿 Wiktor 对不起一件事。因此,它正在编辑整个文件并将 GAA、Launch 等添加到所有“工作人员”。我不希望它编辑整个文件。就这一行。有什么想法吗?
-
你的意思是,只编辑第一次出现?
-
在我放入用户数据之前,我只是在一个 .txt 文件中进行测试,所以它可能只是一个 .txt 文件。看起来它只是删除所有空格。这可能只是记事本表现得很有趣。似乎当我运行该命令时,它会取出所有空格。这在workers.properties 文件中的行为方式是否相同?