2011-12-10 3 views
2

내 입력 라인 (Perl로 구현)추가] 라인

Movies: Action 
Adventure 
Biography 
Comedy 
Books: 
Biography 
Romance 
Sci-Fi 
War 

내 문제는 : 라인이 어떻게 생겼는지 확인하고,이로 끝나는 경우 ":"여기에 다음 줄을 추가합니다.

예를 들어, "Books :"가 포함 된 줄을 "전기"가 들어있는 줄에 조인합니다. 그러나 이것은 한 가지 예일뿐입니다. 줄의 내용은 여러면에서 다를 수 있습니다.

Movies: Action 
Adventure 
Biography 
Comedy 
Books: Biography 
Romance 
Sci-Fi 
War 

답변

0

뒤집기 어설 션을 사용할 수 있습니다.

s/(?<=:)\s*\n/ /gs; 
+1

+1 멋진 접근 방식. 왜 당신 downvote있어 비록 모르겠어요. – sidyll

+0

* [sidyll] (http://stackoverflow.com/users/557306/sidyll) * : 감사합니다. 나도 몰라. :-) –

+0

-1은 ** s ** 플래그의 불필요한 사용을위한 것입니다. – Sorin

0

당신은 할 수 있습니다 :

perl -pe 's/\r?\n$//if(/:\s*$/)' file 

또는

perl -pe 'chomp if(/:\s*$/)' file 

당신이 : 후 공간을 가지고 있지 괜찮 경우

. 여기

0

사용자의 입력 작업을 할 수있는 작은 프로그램 :

perl -pe 's/\s*//if /:$/' text_file 
0

:

while (<>) { 
    s/\s+$//if /:$/; 
    print; 
} 

구조로는 -p 옵션을 제공하는 것, 당신이 당신의 셸에서 한 줄에 그것을 할 수 정확하게 비슷한 것 $text =~ s/:\s*\n/: /msg;