Предположим, у меня есть 2 файла, например:
Файл 1:
Verrucomicrobiaceae
Porphyromonadaceae
Clostridium
Verrucomicrobiaceae
Clostridium
Bacteroidaceae
Clostridium
Verrucomicrobiaceae
Verrucomicrobiaceae
Verrucomicrobiaceae
Verrucomicrobiaceae
Clostridium
Файл 2:
Verrucomicrobiaceae
Porphyromonadaceae
Verrucomicrobiaceae
Porphyromonadaceae
Verrucomicrobiaceae
Verrucomicrobiaceae
Verrucomicrobiaceae
Verrucomicrobiaceae
Я хотел бы посчитать, что произошло следующее:
- Количество случаев, когда строки в файле 1 и 2 совпадают
- Количество случаев, когда строки в файле 1 и 2 различаются
- Количество случаев, когда в строке в файле 1 есть строка, а в той же строке в файле 2 ничего нет (пусто)
- Количество случаев, когда в строке в файле 2 есть строка, а в той же строке в файле 1 ничего нет (пусто)
Я пытался использовать comm
, cmp
и diff
, но они не смогли справиться с этой задачей. Есть ли какая-нибудь команда Linux, которая может это сделать?
0
Bioinfoguy
11 Фев 2013 в 23:04
1 ответ
Лучший ответ
Это достаточно специализировано, чтобы сделать это с помощью стандартных инструментов, вероятно, непросто. Я бы написал программу для сравнения, как в Perl:
#!/usr/bin/perl
open(IN1, "< file1");
open(IN2, "< file2");
$count1 = $count2 = $count3 = $count4 = 0;
while(<IN1>) {
$line1 = $_;
$line2 = <IN2>;
$count1++ if($line1 eq $line2);
$count2++ if($line1 ne $line2);
$count3++ if($line1 ne "" && $line2 eq "");
$count4++ if($line1 eq "" && $line2 ne "");
}
print "$count1 $count2 $count3 $count4\n";
Никакой проверки ошибок нет, предполагается, что оба файла имеют одинаковую длину, ...
0
vonbrand
11 Фев 2013 в 23:29
Здравствуйте, спасибо за помощь, код работает хорошо, за исключением того, что пустая строка соответствует "\ n", а не "".
– Bioinfoguy
12 Фев 2013 в 18:21
Похожие вопросы
Новые вопросы
comparison
Вопросы о сравнении данных и эффективных способах достижения этого. Пожалуйста, не используйте этот тег для общего (мета) сравнения двух вопросов или концепций.
awk
.