Я хочу найти шаблоны, которые перечислены в одном файле и найти их в другом файле. Во втором файле эти шаблоны разделены запятыми.
например, у первого файла F1 есть гены
ENSG00000187546
ENSG00000113492
ENSG00000166971
и второй файл F2 имеет те гены наряду с еще несколькими столбцами (пять столбцов), которые мне нужны
region gene chromosome start end
intronic ENSG00000135870 1 173921301 173921301
intergenic ENSG00000166971(dist=56181),ENSG00000103494(dist=37091) 16 53594504 53594504
ncRNA_intronic ENSG00000215231 5 5039185 5039185
intronic ENSG00000157890 15 66353740 66353740
Таким образом, ген ENSG00000166971, который присутствует во втором файле, не отображается в grep, поскольку у него есть другой ген, разделенный запятой.
Мой код:
grep -f "F1.txt" "F2.txt" >output.txt
Я хочу эти значения, даже если одно из них присутствует, и связанные с ним данные. Есть ли способ сделать это?
grep
привязывает свои шаблоны по умолчанию?grep -f <(echo a) <(echo 'a,b')
Производит ли какой-либо вывод?Ответы:
Какую версию
grep
вы используете? Я попробовал ваш код и получил следующие результаты:Если вы просто хотите , чтобы результаты , которые соответствуют вы можете использовать
grep
«S-o
переключатель , чтобы сообщить только то , что матч:версия grep
Бродячие символы в F1.txt?
При дальнейшей отладке я заметил несколько случайных пробелов в конце второй строки файла
F1.txt
. Вы можете увидеть их, используяhexdump
.Они показывают , как с ASCII коды 20. Вы можете увидеть их в них:
32 20 20 0a
.источник