[DEBUG]
나는 문을 포함하고 결국 그 뒤에 문자열이 있게 될 문자열을 일치시키려고 합니다 ": "
. 뒤에 여러 문자열이 있으면 ": "
첫 번째 문자열과 일치시키고 싶습니다. 그런 다음 [DEBUG]
문과 첫 번째 문 옆에 있는 내용을 모두 색칠하는 것이 아이디어입니다 ": "
.
예를 들면 다음과 같습니다.
[thread1] [DEBUG] [2017.03.12 23:22:12] com.abc.def.Xyz: some log message: some more specific info.
다음과 같이 번역되어야 합니다:
[thread1] ${RED}[DEBUG]${DEFAULT} [2017.03.12 23:22:12] com.abc.def.Xyz: ${RED}some log message.${DEFAULT}
이를 위해서는 다음 sed 대체 문자열로 충분할 것이라고 생각했지만 그렇지 않습니다.
sed -r "s/(\[DEBUG\])([^:]*: )(.*)$/${RED}\1${DEFAULT}\2${RED}\3{$DEFAULT}/"
이 문제로 인해 시간이 많이 걸렸지만 불행하게도 위에 표시된 문자열과 일치하지 않습니다. 이유에 대한 단서가 있나요?
답변1
:
그룹 2에 대해 a ~ a 를 제외한 모든 항목을 일치시키려고 :
하지만 시간에 콜론이 있으므로 일치하지 않습니다. 줄에 다른 부분이 없으면 해당 문자열이 마지막으로 나타날 때까지 일치할 [^:]
것 .
입니다 .:
아마도 더 나은 패턴은 다음과 같습니다.
sed -r 's/(\[DEBUG])( \[[[:digit:].: ]*] [^:]*: )(.*)/${RED}\1${DEFAULT}\2${RED}\3${DEFAULT}/'