Friday, October 20, 2006
펄/Perl] 여러 개의 빈줄 삭제, 하나의 빈줄로 합치기, Collapse Multiple Blank Lines Into One
텍스트 파일에 여러 개의 불필요한 빈 줄이 많이 있으면, 읽기 힘들게 됩니다. 특히 갈무리한 파일의 경우에 그렇습니다.
이것은, 여러 개의 빈 줄을 하나의 빈 줄로 만드는 펄 스크립트입니다.
EmEditor나 울트라에디트(UltraEdit)의 Replace(문자열 치환)로, 빈 줄 지우기 작업을 해 보려고 했는데 잘 되지 않았습니다. 여러 개의 빈줄을 동시에 선택하기 위해서는 \n{2,} 이런 정규식이 있어야 하는데, 정규식에서는 \n{2,} 이런 것이 불가능한 것 같더군요. 한 시간 넘게 구글링을 해보았는데 해답이 없었습니다...
아무튼 그래서 펄로 이런 프로그램을 만들었습니다. 좀 불편하지만, 손으로 일일이 빈줄을 지우는 것보다는 훨씬 나을 것입니다.
파일명: delLines.pl
업데이트: 위의 소스를 더 간단히 만들었습니다: ▶▶ Perl/펄] 빈 줄 삭제, 중복된 빈 줄을 하나로 변환; Delete Empty Lines
테스트용 입력 파일: 0.txt
실행 결과:
여러 개의 빈 줄들이 하나로 깨끗이 합쳐졌습니다.
위의 화면 출력 결과를 파일로 저장하려면,
delLines.pl 0.txt > out.txt
이렇게 하면, out.txt 라는 텍스트 파일로 저장됩니다.
중복된 줄을 모두 지우는 법: ▶▶ Perl/펄] 파일의 중복된 행 지우기; 같은 줄, 동일 값 제거, Remove Duplicate Lines Text File
이것은, 여러 개의 빈 줄을 하나의 빈 줄로 만드는 펄 스크립트입니다.
EmEditor나 울트라에디트(UltraEdit)의 Replace(문자열 치환)로, 빈 줄 지우기 작업을 해 보려고 했는데 잘 되지 않았습니다. 여러 개의 빈줄을 동시에 선택하기 위해서는 \n{2,} 이런 정규식이 있어야 하는데, 정규식에서는 \n{2,} 이런 것이 불가능한 것 같더군요. 한 시간 넘게 구글링을 해보았는데 해답이 없었습니다...
아무튼 그래서 펄로 이런 프로그램을 만들었습니다. 좀 불편하지만, 손으로 일일이 빈줄을 지우는 것보다는 훨씬 나을 것입니다.
텍스트 파일: 중복된 빈 줄(개행/줄바꿈문자) 제거, 하나로 만들기
파일명: delLines.pl
#!/usr/bin/perl
use strict; use warnings;
my $count = 0;
while (<>) {
if (/^\s*$/) {
$count++;
print $_ if ($count < 2);
}
else {
$count = 0;
print $_;
}
}
use strict; use warnings;
my $count = 0;
while (<>) {
if (/^\s*$/) {
$count++;
print $_ if ($count < 2);
}
else {
$count = 0;
print $_;
}
}
업데이트: 위의 소스를 더 간단히 만들었습니다: ▶▶ Perl/펄] 빈 줄 삭제, 중복된 빈 줄을 하나로 변환; Delete Empty Lines
테스트용 입력 파일: 0.txt
청포도
이육사
내 고장 칠월은
청포도가 익어 가는 시절
이 마을 전설이 주저리주저리 열리고
먼 데 하늘이 꿈꾸며 알알이 들여와 박혀
하늘 밑 푸른 바다가 가슴을 열고
흰 돛단배가 곱게 밀려서 오면,
내가 바라는 손님은 고달픈 몸으로
靑袍를 입고 찾아온다고 했으니
내 그를 맞아, 이 포도를 따먹으면
두 손은 함뿍 적셔도 좋으련
아이야, 우리 식탁엔 은쟁반에
하이얀 모시 수건을 마련해 두렴
이육사
내 고장 칠월은
청포도가 익어 가는 시절
이 마을 전설이 주저리주저리 열리고
먼 데 하늘이 꿈꾸며 알알이 들여와 박혀
하늘 밑 푸른 바다가 가슴을 열고
흰 돛단배가 곱게 밀려서 오면,
내가 바라는 손님은 고달픈 몸으로
靑袍를 입고 찾아온다고 했으니
내 그를 맞아, 이 포도를 따먹으면
두 손은 함뿍 적셔도 좋으련
아이야, 우리 식탁엔 은쟁반에
하이얀 모시 수건을 마련해 두렴
실행 결과:
D:\Z>delLines.pl 0.txt
청포도
이육사
내 고장 칠월은
청포도가 익어 가는 시절
이 마을 전설이 주저리주저리 열리고
먼 데 하늘이 꿈꾸며 알알이 들여와 박혀
하늘 밑 푸른 바다가 가슴을 열고
흰 돛단배가 곱게 밀려서 오면,
내가 바라는 손님은 고달픈 몸으로
靑袍를 입고 찾아온다고 했으니
내 그를 맞아, 이 포도를 따먹으면
두 손은 함뿍 적셔도 좋으련
아이야, 우리 식탁엔 은쟁반에
하이얀 모시 수건을 마련해 두렴
D:\Z>
청포도
이육사
내 고장 칠월은
청포도가 익어 가는 시절
이 마을 전설이 주저리주저리 열리고
먼 데 하늘이 꿈꾸며 알알이 들여와 박혀
하늘 밑 푸른 바다가 가슴을 열고
흰 돛단배가 곱게 밀려서 오면,
내가 바라는 손님은 고달픈 몸으로
靑袍를 입고 찾아온다고 했으니
내 그를 맞아, 이 포도를 따먹으면
두 손은 함뿍 적셔도 좋으련
아이야, 우리 식탁엔 은쟁반에
하이얀 모시 수건을 마련해 두렴
D:\Z>
여러 개의 빈 줄들이 하나로 깨끗이 합쳐졌습니다.
위의 화면 출력 결과를 파일로 저장하려면,
delLines.pl 0.txt > out.txt
이렇게 하면, out.txt 라는 텍스트 파일로 저장됩니다.
중복된 줄을 모두 지우는 법: ▶▶ Perl/펄] 파일의 중복된 행 지우기; 같은 줄, 동일 값 제거, Remove Duplicate Lines Text File
tag: perl
Perl | 펄
<< Home