2010-08-10 1 views
1

특정 문자에 앞서 새로운 라인 3 공백 또는 두 단어를 삽입 : 안녕하세요 제인 미상>어떻게이처럼 보이는 친구 채팅 로그 포맷하려고했다

존 스미스> 이봐, 당신은 어떻게입니까? 존 스미스> 아주 좋은 감사합니다

그녀는 다음과 같이 포맷 싶어 :

존 스미스> 안녕하세요

제인 미상> 이봐, 당신은 어떻게입니까?

존 스미스> 아주 좋은 감사합니다

>가 올바르게 포맷 할 것으로 충분하지 않습니다, 그래서 나는 이전에 새로운 라인 3 공백, 또는 두 단어를 삽입해야 후 간단히 새 줄을 입력 ">"그래서 이름도 붙잡 힙니다.

지금까지 난 단지 새로운 라인을 가지고> 후 :

는/usr/빈/펄 -p -i -e "S /> /> \ n/g"*

.txt 인

편집 : 약 20 개 이상의 서로 다른 채팅 이름이 포함되어 있으므로 이름이 다를 수 있으므로 이름을 입력하지 않아도 좋을 것입니다. 재미있는 부분을 배우고 싶습니다. 내가 정규식에 사용

perl -p -i -e "s/(\w+\s\w+\s*>)/\n\1/g" log.txt 

시험 :이 하나를 시도

+0

이 메시지는 두 사람 사이의 IM 로그일까요? 로그의 사용자 이름을 알고있는 경우를 처리하는 방법은 매우 쉽습니다. – eldarerathis

+0

20 명이 넘는 다른 이름의 그룹 채팅이므로 모든 세션 이름이 각 세션마다 약간 씩 다를 수 있으므로 모든 이름을 입력하지 않아야합니다. 그것은 단지 텍스트를 선택하고 붙여 넣기 복사를 허락하는 진절머리 나는 웹 인터페이스이지만 형식을 유지하지는 않습니다 ... –

+0

그래서 사용자 이름은 두 단어 사이의 공백과 두 번째 단어와 ' >'? – eldarerathis

답변

1

를 읽기위한 감사

[21:21:23] ~ $ echo 'John Smith > hello Jane doe > hey how are you? John Smith > Pretty good thanks Susie Someone > hi guys' > log.txt 
[21:21:24] ~ $ more log.txt 
John Smith > hello Jane doe > hey how are you? John Smith > Pretty good thanks Susie Someone > hi guys 
[21:21:27] ~ $ perl -p -i -e "s/(\w+\s\w+\s>)/\n\1/g" log.txt 
[21:21:34] ~ $ more log.txt 

John Smith > hello 
Jane doe > hey how are you? 
John Smith > Pretty good thanks 
Susie Someone > hi guys 
[21:21:37] ~ $ 

이 파일의 시작 부분에 여분의 줄 바꿈을 추가하지,하지만 아무튼 경우 너를 귀찮게하지 않으면 나는 그것이 효과가 있다고 생각한다.

편집 : 누군가가 어떤 이유로 메시지 중 하나에서 > 문자를 사용하면 편집이 실패합니다 (어쨌든 공백과 두 단어가 앞에 나온 경우).

+0

완벽한 고마워요 !!!! –

+0

드문 경우지만 이러한 딸꾹질이 발생하면 수동 편집이 가능하지만 각 줄을 직접보고 편집하는 것이 좋습니다! :) –

+0

텍스트를 복사하는 경우는 어떻게됩니까? John Smith> Jane Doe> Jane Doe의 이름/본문, John Smith가 복사/붙여 넣기. 빈 John Smith 줄과 Jane Doe로 나타납니다. 로그를 작성하는 응용 프로그램을 제어 할 수 있습니까? – vol7ron

0

나는 이미 "좋은"스크립트를 가지고 있다는 것을 알고 있습니다. 그러나 나는 어쨌든 대체 전략을 제안 할 것이라고 생각했다.

이 작업을 두 부분으로 처리하십시오.

1 부 : 원시 데이터를 분석하고 사용자 이름 목록을 추출하십시오. > 앞에 (X 길이까지의) 반복 단어 그룹에 대한

  • 봐.
  • 가능한 사용자 이름 목록을 생성하십시오.

사용자가 단계별로 사용자 이름 목록을 승인합니다.

2 부 : 사용자 이름 목록을 기반으로 데이터를 처리하십시오.

이 과정의 장점을 구분 기호로 파일과 일치하는 사용자 이름을 사용하는

  • 프로세스는 최종 출력에 제대로 인라인 > 문자를 처리 할 수 ​​있다는 것입니다.유효한 사용자 이름에 아무도 입력하지 않고 적어도 >을 입력하는 한.

    물론 코드가 더 복잡 할 것입니다. 추가 된 복잡성이 향상된 정확성의 가치가 있는지 여부는 필요에 따라 다릅니다.