У меня есть XML-файл конфигурации с именем solrconfig.xml, в середине которого находится этот раздел:
<!--############ BEGIN replication settings DO NOT EDIT ################################-->
<requestHandler name="/replication" class="solr.ReplicationHandler" >
<lst name="master">
<str name="replicateAfter">commit</str>
<str name="replicateAfter">startup</str>
<str name="confFiles">schema.xml,stopwords.txt</str>
</lst>
</requestHandler>
<!--############ END replication settings DO NOT EDIT ################################-->
У меня есть сценарий оболочки, который я хочу использовать для замены этого раздела в случае, если я настраиваю сервер в качестве ведомого. У меня это работает, за исключением того, что он помещает новый раздел в конец файла вместо того же места, что и старый, вы можете помочь мне настроить это, чтобы заменить его в том же месте.
if [ -n "$1" ] && [ $1 == "slave" ]
then
rm solrconfig2.xml
echo "setting up slave"
cat solrconfig.xml | awk '
/^<!--############ BEGIN replication/ { skip = 1 }
/^<!--############ END replication/ { skip = 0; next; }
{ if (skip == 0) print $0; }
END {
print "<!--############ BEGIN replication settings DO NOT EDIT ################################-->"
print "<requestHandler name=\"/replication\" class=\"solr.ReplicationHandler\" >"
print "<lst name=\"slave\">"
print "<str name=\"masterUrl\">http://solr-master:8983/solr/replication</str>"
print "<str name=\"pollInterval\">00:00:60</str>"
print "</lst>"
print "</requestHandler>"
print "<!--############ END replication settings DO NOT EDIT ################################-->"
}
' > solrconfig2.xml
fi