Вы не можете сделать это в grep, нет. Хотя вы можете использовать файл с шаблонами для поиска в качестве входных данных для grep
, вы не можете указать конкретное поле в этом файле. Итак, если вы хотите сопоставить только 2-е позиции, вам понадобится что-то вроде этого:
$ awk '{ if(NR==FNR){a[$2]=$0}else{if($2 in a){print}}}' file1.vcf file2.vcf
#CHROM POS ID REF ALT QUAL
1 10366 rs58108140 G A
1 51954 rs185832753 G C
Конечно, это также напечатает случаи, когда положение такое же, но вариант находится на другой хромосоме. Это то, о чем спрашивал ваш вопрос, но может иметь смысл искать уникальные комбинации chr и pos:
$ awk '{ if(NR==FNR){a[$1$2]=$0}else{if($1$2 in a){print}}}' file1.vcf file2.vcf
#CHROM POS ID REF ALT QUAL
1 10366 rs58108140 G A
1 51954 rs185832753 G C
Чтобы сделать это с grep
, вам нужно сначала извлечь поле POS в новый файл:
awk '{print $2}' file1.vcf > file3
$ cat file3
POS
10366
10611
51954
13327
13957
13980
Теперь используйте этот файл сgrep
:
$ grep -f file3 file2.vcf
#CHROM POS ID REF ALT QUAL
1 10366 rs58108140 G A
1 51954 rs185832753 G C
Но это действительно не очень хорошая идея. Например, он также найдет совпадение для 1103668 since
10366 is a substring of
1103668 `.
Наконец, предполагая, что это два действительных файла vcf (, которых нет в ваших примерах ), вы можете использовать bedtools intersect
. Но это не совсем в тему здесь.
Нашел:
cd ~
nano dotfiles
Я переименовал .bashrc
в dotfiles...
:стыдно:
Используйте опции -t
или -T
для mv
и cp
SYNOPSIS
mv [OPTION]... [-T] SOURCE DEST
mv [OPTION]... SOURCE... DIRECTORY
mv [OPTION]... -t DIRECTORY SOURCE...
так что для вашего примера
mv -t dotfiles/.bashrc
Если в вашей cp
и mv
дозе нет опции -t
, вы можете сделатьmv.bashrc dotfiles/
Альтернативы -T
нет.