У меня есть таблица из 9M строк, snp_collection.tab
с пустыми значениями в нескольких столбцах:
snpID freq_bin ID_nearest_gene ID_nearest_gene_located_within HGNC_nearest_gene_snpsnap HGNC_nearest_gene_snpsnap_protein_coding flag_snp_within_gene flag_snp_within_gene_protein_coding
10:10001753 7 ENSG00000224788 CELF2 FALSE FALSE
10:10001794 41 ENSG00000224788 CELF2 FALSE FALSE
10:100023489 10 ENSG00000138131 ENSG00000138131 LOXL4 LOXL4 TRUE TRUE
10:100025128 45 ENSG00000138131 ENSG00000138131 LOXL4 LOXL4 TRUE TRUE
10:10002975 1 ENSG00000224788 CELF2 FALSE FALSE
Что для простоты выглядит следующим образом: ![enter image description here](https://i.stack.imgur.com/kX8zy.png)
Это запутывает, когда я позже разбираю его, используя awk
, чтобы создать более полезную таблицу для моих целей:
Более поздний шаг, который испортился из-за грязного ввода:
tail -n+2 broadSNPs.tab | gawk -F'[:\t]' -vOFS="\t" '{ print "chr"$1, ($2 - 1), $2, $3, $18, $19, $20, $21}' > broadSNPs.bed
Здесь пустые пробелы не соблюдаются awk
, и строки с пустыми пробелами смещаются в выходных данных.
Итак, я пытаюсь заполнить эти пустые места до awk
.
Используя приведенный здесь совет, Заполнение пробела / табуляция разделены, пустые столбцы с 0 , я сделал:
sed 's/\t\t/\tNA\t/g' snp_collection.tab > broadSNPs.tab
Я также пытался заменить \t
на ctrl+v+tab
, но, увы, вывод остался таким же, как и в оригинальном snp_collection.tab
, с пустыми пробелами, все еще просто пустыми.
Чего мне не хватает? Спасибо!
Желаемый выход:
snpID freq_bin ID_nearest_gene ID_nearest_gene_located_within HGNC_nearest_gene_snpsnap HGNC_nearest_gene_snpsnap_protein_coding flag_snp_within_gene flag_snp_within_gene_protein_coding
10:10001753 7 ENSG00000224788 NA NA CELF2 FALSE FALSE
10:10001794 41 ENSG00000224788 NA NA CELF2 FALSE FALSE
10:100023489 10 ENSG00000138131 ENSG00000138131 LOXL4 LOXL4 TRUE TRUE
10:100025128 45 ENSG00000138131 ENSG00000138131 LOXL4 LOXL4 TRUE TRUE
10:10002975 1 ENSG00000224788 NA NA CELF2 FALSE FALSE
С этим фиксированным вводом моя команда awk
не должна выдавать бессмысленный вывод.