답변을 방문하고 삭제하는 일반 검색을 사용 'uniq'가 인접한 중복 된 행만 찾거나 데이터 파일이 정렬되어 위치 정보가 손실되는 문제. 어떤 라인이 영원히 반복되지 않을 수있는 경우
, 데이터 소스가 믿을 humungous 한 아니라고 가정하면, 펄 (또는 정규식과 연관 배열을 지원하는 다른 스크립팅 언어)에서 수행하는 비교적 간단
#!/bin/perl -w
# BEWARE: untested code!
use strict;
my(%lines);
while (<>)
{
print if !defined $lines{$_};
$lines{$_} = 1;
}
그러나 무차별 적으로 사용되는 경우 종료 태그가 합법적으로 반복되므로 XML을 손상시킬 수 있습니다. 이것을 피하는 방법? 'OK to repeat'라인의 화이트리스트에 의해 어쩌면? 물론
#!/bin/perl -w
# BEWARE: untested code!
use strict;
my(%lines);
while (<>)
{
if (m%^\s*<[^\s>]+\s[^\s>]+%)
{
print if !defined $lines{$_};
$lines{$_} = 1;
}
else
{
print;
}
}
은 또한 정규 표현식으로 XML을 처리하는 것은 잘못이라는 (주로 유효) 인수가 : 아니면 값을 공개 태그 만 선은 제거 중복 될 수 있습니다. 이 코딩에서는 XML에 편리한 줄 바꿈이 많이 있다고 가정합니다. 실제 XML에는 일부만 포함되거나 아주 적게 포함될 수 있습니다.
감사합니다,하지만 나는 또한 제거 할 수있는 라인을 찾을 수 있도록 위의 세 줄을 일치하는 정규식을 찾기 위해 노력하고있어. – magneticMonster
항상 3 줄입니까? .. 파일의 첫 번째 줄과 마지막 줄이 같은 경우 전체 파일을 반환하는 정규식을 사용하지 않아도됩니다. –