У меня возникли некоторые сложности с сопоставлением строк друг с другом, и мне было интересно, если кто-то может протянуть руку?
Скажите, у меня есть следующая таблица:
broken
vector
unidentified
synthetic
artificial
И у меня естьвторой набор данных, который выглядит следующим образом:
org1 Fish
org2 Amphibian
org3 vector
org4 synthetic species
org5 Mammal
Теперь я хочу удалить все строки из второй таблицы, которые соответствуют строке из первой таблицы, чтобы выходные данные выглядели так:
org1 Fish
org2 Amphibian
org5 Mammal
Я думал об использовании grep -v в bash, но я не совсем уверен, как заставить его перебрать все строки в таблице 1.
Я пытаюсь решить это в perl, но дляпо какой-то причине он возвращает все мои значения, а не только те, которые совпадают.Есть идеи почему?
Мой сценарий выглядит так:
#!/bin/perl -w
($br_str, $dataset) = @ARGV;
open($fh, "<", $br_str) || die "Could not open file $br_str/n $!";
while (<$fh>) {
$str = $_;
push @strings, $str;
next;
}
open($fh2, "<", $dataset) || die "Could not open file $dataset $!/n";
while (<$fh2>) {
chomp;
@tmp = split /\t/, $_;
$groups = $tmp[1];
foreach $str(@strings){
if ($str ne $groups){
@working_lines = @tmp;
next;
}
}
print "@working_lines\n";
}