sed命令未正确搜索字符串并替换

wgxvkvu9  于 2021-10-10  发布在  Java
关注(0)|答案(1)|浏览(331)

我目前正在为一个项目部署一个新的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而不是使用逗号?

bjg7j2ky

bjg7j2ky1#

您可以在之后匹配任何文本 worker.list= 使用 worker\.list=.* :

sed -i 's/worker\.list=.*/worker.list=GMA,ETL,common-resource,GAA,authzmanager,Launch,jkstatus/' ${INSTALL_BASE}/${APACHE_DIR}/conf/jk/workers.properties

若要仅删除文件中的第一个匹配项,请使用

sed -i '0,/worker\.list=.*/s//worker.list=GMA,ETL,common-resource,GAA,authzmanager,Launch,jkstatus/' ${INSTALL_BASE}/${APACHE_DIR}/conf/jk/workers.properties

0,/pattern/ 将仅删除文件中的第一个匹配项。

相关问题