메모장: 문자열이 포함된 마지막 줄을 각 줄의 접두어로 어떻게 지정합니까?

메모장: 문자열이 포함된 마지막 줄을 각 줄의 접두어로 어떻게 지정합니까?

채팅 로그 작업 중인데 형식을 지정하고 싶습니다.

# 기호를 포함하여 정확히 다음과 같습니다.

Tuesday, February 24, 2015
##Person1 (21:22:01): hello
##Person2 (21:22:37): hi
Wednesday, February 25, 2015
##Person1 (13:12:43): hey
##Person2 (13:13:04): hey

날짜는 새로운 날마다 게시되며 스프레드시트에서 사용할 수 있도록 다음과 같은 형식으로 지정하고 싶습니다.

Tuesday, February 24, 2015
Tuesday, February 24, 2015##Person1 (21:22:01): hey
Tuesday, February 24, 2015##Person2 (21:22:37): hi
Wednesday, February 25, 2015
Wednesday, February 25, 2015##Person1 (13:12:43): hey
Wednesday, February 25, 2015##Person2 (13:13:04): hey

그런 다음 ## 문자열이 포함되지 않은 줄을 쉽게 삭제하여 날짜 전용 줄을 제거할 수 있습니다.

날짜의 문자열(예 \d{1,2}, 201\d{1}$:)이 포함된 가장 최근 줄 전체를 그 아래의 각 줄 시작 부분(다음 인스턴스까지)에 추가하도록 Notepad++를 얻을 수 있는 방법이 있습니까?

답변1

Notepad++에서는 이 작업을 수행할 수 없습니다.

다음은 해당 작업을 수행하는 Perl one-liner입니다.

perl -ane '$date = $1 if /^(\w+,\h+\w+\h+\d\d?,\h+20\d\d)/;s/^(?=##)/$date/ && print;' file.txt

파일을 그 자리에서 바꾸려면 다음을 사용하십시오.

perl -i -ane '$date = $1 if /^(\w+,\h+\w+\h+\d\d?,\h+20\d\d)/;s/^(?=##)/$date/ && print;' file.txt

산출:

Tuesday, February 24, 2015##Person1 (21:22:01): hello
Tuesday, February 24, 2015##Person2 (21:22:37): hi
Wednesday, February 25, 2015##Person1 (13:12:43): hey
Wednesday, February 25, 2015##Person2 (13:13:04): hey

정규식 설명:

/               # delimiter
  ^             # beginning of line
  (             # start group 1
    \w+         # 1 or more word character
    ,           # a comma
    \h+         # 1 or more horizontal spaces
    \w+         # 1 or more word character
    \h+         # 1 or more horizontal spaces
    \d\d?       # 1 or 2 digits
    ,           # a comma
    \h+         # 1 or more horizontal spaces
    20\d\d      # 20 and 2 digits
  )             # end group 1
/               # delimiter


s/              # substitute, delimiter
  ^             # beginning of line
  (?=##)        # positive lookahead, zero-length assertion that make sure we have ## at the beginning
/               # delimiter
  $date         # the date found with the preceding  regex
/               # delimiter

관련 정보