1

A と B の 2 つのファイルがあります。ファイル B にない個人、ファイル A の一意の行のみを出力する必要があります。

ファイル A は次のようになります。

SNP CHR GeneticDistance BP P
rs1043096 1 0.000000 111682307 1.6478397881920986E-06
rs6661407 1 0.000000 230654589 6.5655676421792970E-06
rs1822312 1 0.000000 146687250 6.9190273469706007E-06
rs7533254 1 0.000000 34181830 1.8066585187932294E-05
rs1414355 1 0.000000 89828716 2.0823984140492505E-05
rs237425 1 0.000000 94012287 4.3816651855534701E-05

ファイル B は次のようになります。

rs1043096
rs1822312

出力は次のようになります。

SNP CHR GeneticDistance BP P
rs6661407 1 0.000000 230654589 6.5655676421792970E-06
rs7533254 1 0.000000 34181830 1.8066585187932294E-05
rs1414355 1 0.000000 89828716 2.0823984140492505E-05
rs237425 1 0.000000 94012287 4.3816651855534701E-05

どこから始めたらいいのかもわからないし、どの言語を使えばいいのかもわからない!おそらく正規表現で != を使用できないか、ファイル A に固有の行だけでなく、行ごとに一致しないファイル内の他のすべてを取得します

このような変更はできますか?ファイル A ファイル B を並べ替える | uniq -u > ファイル C

それともこれ?とにかく、ファイル A と B の行が同一に見えないため、注意が必要です。

open(FILE1, "< fileA.txt");
open(FILE2, "< fileB.txt");

@file1 = <FILE1>;
@file2 = <FILE2>;

foreach $line (@file1, @file2)
{
    chomp($line);
    $TEXT{$line}++;
}

foreach $line (sort keys %TEXT)
{
    if ($TEXT{$line} == 1)
    {
         print $line . "\n";
    }
}

ありがとう!

4

2 に答える 2

1
grep -Fv -f B A
 # or
fgrep -v -f B A

これにより、B のどの文字列とも一致しない A の各行がリストされます。

B値のプレフィックスを一致させる際に短い値で問題が発生する可能性がありますA。その場合、 の各行にスペースを追加できますB

sed 's/$/ /' B | fgrep -v -f - A
于 2013-05-29T10:51:12.633 に答える