2012-09-07 3 views
0

쉘에서 파일을 다시 포맷해야하므로 일부 패턴보다 먼저 '새 줄'만 남겨 둡니다. 예 :패턴 전에 새 줄을 남기십시오.

입력 :

Europe First 
Asia Second 
Africa Third 
Australia Fourth 
Europe Sixth 
Australia Seventh 
Europe Eight 
America Last 

출력 :

Europe FirstAsia SecondAfrica ThirdAustralia Fourth 
Europe SixthAustralia Seventh 
Europe EightAmerica Last 

패턴이 함께 선행

+0

인가? 그렇다면 태그로 붙여야합니다. – Borodin

+1

모든 줄 사이에 빈 줄이 있습니까? 나는 거기에없는 것을 자랑스럽게 생각하고있다. – ikegami

답변

1
perl -i -0777pe's/\n(?!Europe|\z)/ /g' file 
+0

Thx. 응답의 신속 함으로 나는 이것이 아주 간단한 일임을 이해합니다. Perl에 익숙하지 않아 어떻게 작동하는지 이해하려고합니다. –

+0

옵션 ('-i','-0','-p' 및'-e')은 [perlrun] (http://perldoc.perl.org/perlrun.html)에 설명되어 있습니다. – ikegami

+0

죄송합니다. 공백을 추가한다고 생각했지만 잘못 읽었습니다. 공백을 원하지 않으면 공백을 대체 표현식에서 제거하십시오. – ikegami

0
간단히

chomp 모든 라인과 print을 "유럽"입니다 패턴으로 시작하면 추가 줄 바꿈

perl -ne 'chomp; print "\n" if /^Europe/; print' myfile 
+1

나는'perl -pe 'chomp를 사용할 것이다;///유럽/& & $.-1; END {print "\ n"} '''처음에는 빈 줄을, 끝에는 줄 바꾸기를 사용하지 마십시오. – choroba

+0

아마도. 그리고 이케 가미는 연결된 선 사이에 공백을 넣기로 결정했습니다. 그러나 요구 사항은 너무 단순해서 어떤 고역은 아마도 불필요하다고 생각합니다. – Borodin

+0

왜'$ .- 1' 대신'$ .- 1'이 필요한가요? > 1? – Borodin

0

당신 (GNU이 나오지도)에 대한이 작동하지 않을 수 있습니다 :이 숙제

sed ':a;$!N;/\nEurope/!s/\n//;ta;P;D' file 
관련 문제