we want to add the following lines in log4j file
log4j.appender.DRFA=org.apache.log4j.RollingFileAppender
log4j.appender.DRFA.MaxBackupIndex=100
log4j.appender.DRFA.MaxFileSize=10MB
but these lines must be before the first line that include the word – DatePattern , and no matter if line is with mark or not
#log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
or
log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
note – in case DatePattern word apears couple times in file , then the three lines must be set only before the first line that include – DatePattern
example 1 ( expected output )
log4j.appender.DRFA=org.apache.log4j.RollingFileAppender
log4j.appender.DRFA.MaxBackupIndex=100
log4j.appender.DRFA.MaxFileSize=10MB
#log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
example 2 ( expected output )
log4j.appender.DRFA=org.apache.log4j.RollingFileAppender
log4j.appender.DRFA.MaxBackupIndex=100
log4j.appender.DRFA.MaxFileSize=10MB
log4j.appender.DRFA.DatePattern=.yyyy-MM-dd
Best Answer
If I understand your question correctly you merely want to replace this line:
With these lines:
This GNU
sed
command can do this:With respect to the duplicating of lines. You're not going to have this appender defined more than 1 time:
Therefore we can look more explicitly for this occurrence, rather than the
DatePattern
line that you're looking for.Example run
Here's a sample file that has just this line in it:
Run the
sed
command above against this file: