XML 구성 파일에서 마지막 닫는 태그가 깨지지 않도록 한 줄을 추가해야 합니다. SED를 사용하여 이를 달성할 수 있습니까?
전체 파일의 줄 수는 서버마다 다를 수 있습니다.
편집: 편집해야 할 파일의 몇 가지 예:
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
다른 예시:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<property name="DEV_HOME" value="c:/logs" />
<appender name="FILE-AUDIT"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${DEV_HOME}/debug.log</file>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>
%d{yyyy-MM-dd HH:mm:ss} - %msg%n
</Pattern>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${DEV_HOME}/archived/debug.%d{yyyy-MM-dd}.%i.log
</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
</appender>
<logger name="com.mkyong.web" level="debug"
additivity="false">
<appender-ref ref="FILE-AUDIT" />
</logger>
<root level="error">
<appender-ref ref="FILE-AUDIT" />
</root>
<logger name="com.mkyong.ext" level="debug"
additivity="false">
<appender-ref ref="FILE-AUDIT" />
</logger>
<logger name="com.mkyong.other" level="info"
additivity="false">
<appender-ref ref="FILE-AUDIT" />
</logger>
<logger name="com.mkyong.commons" level="debug"
additivity="false">
<appender-ref ref="FILE-AUDIT" />
</logger>
</configuration>
답변1
i마지막( $
) 행 앞에 행을 삽입 하려면 다음을 수행합니다.
$ cat test
one
two
three
four
five
$ sed '$i<hello>!' test
one
two
three
four
<hello>!
five
이는 GNU용입니다 sed
(선행 공백이나 탭이 제거됨에 유의하세요). 이식성을 가지려면(또는 sed
삽입된 줄의 선행 공백이나 탭을 유지하려는 경우 GNU를 사용하려면) 다음이 필요합니다.
sed '$i\
<hello>!' test
답변2
예, sed
수행할 작업을 지시하기 전에 행 번호를 작성하여 특정 행에서만 작업하는 것이 가능합니다. 예를 들어 foo
파일의 4번째 줄 뒤에 문자열이 포함된 줄을 삽입하려면 다음을 수행합니다.
sed '4s/$/\nfoo/' file # GNU sed and a few others
sed '4s/$/\
foo/' file # standardly/portably
두 번째에서 마지막 행 다음에 행을 삽입하려면 다음 두 가지 방법을 생각해 볼 수 있습니다.
먼저 행 수를 계산한 다음 편집하세요.
sed "$(( $( wc -l < file) -2 ))s/$/\nfoo/" file
사용
tac
:tac file | sed '2s/$/\nfoo/' | tac