Se eu entendi sua pergunta corretamente, você simplesmente deseja substituir esta linha:
log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
-or-
#log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
Com estas linhas:
log4j.appender.DRFA=org.apache.log4j.RollingFileAppender
log4j.appender.DRFA.MaxBackupIndex=100
log4j.appender.DRFA.MaxFileSize=10MB
log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
-or-
#log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
Este comando GNU sed
pode fazer isso:
$ sed -i 's/\(.*appender.DRFA.DatePattern=.*\)/log4j.appender.DRFA=org.apache.log4j.RollingFileAppender\nlog4j.appender.DRFA.MaxBackupIndex=100\nlog4j.appender.DRFA.MaxFileSize=10MB\n\n\n/' log4j.properties
No que diz respeito à duplicação de linhas. Você não terá esse appender definido mais de uma vez:
appender.DRFA.DatePattern
Portanto, podemos olhar mais explicitamente para essa ocorrência, em vez da linha DatePattern
que você está procurando.
Exemplo de execução
Aqui está um arquivo de exemplo que tem apenas esta linha:
$ cat log4j.properties
#log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
Execute o comando sed
acima neste arquivo:
$ cat log4j.properties
log4j.appender.DRFA=org.apache.log4j.RollingFileAppender
log4j.appender.DRFA.MaxBackupIndex=100
log4j.appender.DRFA.MaxFileSize=10MB
#log4j.appender.DRFA.DatePattern=.yyyy-MM-dd