저는 Perl을 사용하는 데있어서 아주 새로운데, 파일의 모든 행을 비교할 때 사용해야합니다. 파일에는 두 ID가 | 분리되어 있습니다. 및 각 ID 쌍에 대한 값. 그것은 다음과 같습니다perl을 사용하여 행의 역순으로 행을 비교하십시오.
a|b 9
a|a 1
a|c 4
s|c 3
f|e NA
a|d 2
d|a 2
d|b 5
c|l NA
c|s 3
내가 같은 ID를 (문자)와 또 다른이있는 경우 행을 제거하기 좋아하지만, 거꾸로 위해 (유사한 | D 및 D | A) 것, 행에 나는 "NA"를 값으로, 두 ID가 같은 행을 (예 : | a 1과 같이) 가지고 있습니다. 여기 예에서, 나는 다음과 같은 출력을 얻을 싶습니다 : 내가 쓴 코드를 시도하고
a|b 9
a|c 4
s|c 3
a|d 2
d|b 5
. "NA"와 ID가 같은 행 (예 : a 1)을 제거 할 수 있지만 반전 된 ID가있는 행을 감지 할 수는 없습니다.
$file = "test.txt";
open (HAN, "$file") || die "No input file";
@r = <HAN>;
close (HAN);
for ($i=0; $i<=$#r; $i++) {
chomp($r[$i]);
($id, $v) = split (/\t/, $r[$i]);
if ($v ne NA) {
($id1, $id2) = split (/\|/, $id);
$ii = $id1."|".$id2;
$dd = $id2."|".$id1;
if(($id1 ne $id2)||($ii ne $dd)){
print "$id\t$v\n";
}
}
}
아무 도움이 절대적으로 환영합니다!
는 (ID의)는 지금까지 발생한 모든 쌍을 추적 할 필요가 갑
감사합니다 ... 매우 간단하고 명확한 설명! – Gabelins