sed 命令没有正确搜索字符串并替换
sed command not searching for string correctly and replacing
我目前正在为一个项目部署一个新的网络应用程序 (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 上停止而不是使用逗号呢?
您可以使用 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/
将仅删除文件中的第一个匹配项。
我目前正在为一个项目部署一个新的网络应用程序 (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 上停止而不是使用逗号呢?
您可以使用 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/
将仅删除文件中的第一个匹配项。