манипулирование таблицей с разделителями табуляции в среде unix - PullRequest
0 голосов
/ 18 октября 2018

У меня есть файл с разделителями табуляции .txt, map.txt, который выглядит следующим образом:

#SampleID   BarcodeSequence LinkerPrimerSequence    sample_type Description geneticSampleID
OSBS.087.39.M.32.18.20140227    TCCCTTGTCTCC    CGGCTGCGTTCTTCATCGATGC  soil    Plate 1A1   OSBS_087-M-32-18-20140227-gen
OSBS.048.41.M.37.33.20140227    ACGAGACTGATT    CGGCTGCGTTCTTCATCGATGC  soil    Plate 1A2   OSBS_048-M-37-33-20140227-gen
OSBS.048.23.M.15.31.20140227    GCTGTACGGATT    CGGCTGCGTTCTTCATCGATGC  soil    Plate 1A3   OSBS_048-M-15-31-20140227-gen
OSBS.047.21.M.20.3.20140227 ATCACCAGGTGT    CGGCTGCGTTCTTCATCGATGC  soil    Plate 1A4   OSBS_047-M-20-3-20140227-gen
OSBS.119.23.M.18.38.20140227    TGGTCAACGATA    CGGCTGCGTTCTTCATCGATGC  soil    Plate 1A5   OSBS_119-M-18-38-20140227-gen
OSBS.047.41.M.22.36.20140227    ATCGCACAGTAA    CGGCTGCGTTCTTCATCGATGC  soil    Plate 1A6   OSBS_047-M-22-36-20140227-gen
OSBS.087.41.M.40.21.20140227    GTCGTGTAGCCT    CGGCTGCGTTCTTCATCGATGC  soil    Plate 1A7   OSBS_087-M-40-21-20140227-gen
OSBS.048.21.M.5.11.20140227 AGCGGAGGTTAG    CGGCTGCGTTCTTCATCGATGC  soil    Plate 1A8   OSBS_048-M-5-11-20140227-gen
OSBS.119.39.M.27.5.20140227 ATCCTTTGGTTC    CGGCTGCGTTCTTCATCGATGC  soil    Plate 1A9   OSBS_119-M-27-5-20140227-gen

Я хотел бы создать новый файл, где первая строка - это запись в geneticSampleID ивторая строка - BarcodeSequence, поэтому выходные данные будут выглядеть так:

>OSBS_087-M-32-18-20140227-gen
TCCCTTGTCTCC
>OSBS_048-M-37-33-20140227-gen
ACGAGACTGATT
>OSBS_048-M-15-31-20140227-gen
GCTGTACGGATT

... и т. д. для всех строк в map.txt.Итак, если бы у map.txt было 100 строк (или 101 с заголовком), тогда у output.txt было бы 200 строк.

Я знаю, что это, вероятно, довольно тривиальная манипуляция, но я в настоящее время очень застрял.

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Да, довольно тривиально:

tail -n +2 map.txt | cut -f1,2 | tr '\t' '\n'

Это дает мне:

OSBS.087.39.M.32.18.20140227
TCCCTTGTCTCC
OSBS.048.41.M.37.33.20140227
ACGAGACTGATT
OSBS.048.23.M.15.31.20140227
GCTGTACGGATT
OSBS.047.21.M.20.3.20140227
ATCACCAGGTGT
OSBS.119.23.M.18.38.20140227
TGGTCAACGATA
OSBS.047.41.M.22.36.20140227
ATCGCACAGTAA
OSBS.087.41.M.40.21.20140227
GTCGTGTAGCCT
OSBS.048.21.M.5.11.20140227
AGCGGAGGTTAG
OSBS.119.39.M.27.5.20140227
ATCCTTTGGTTC

tail выводит первую строку.cut дает только первые два поля.tr заменяет вкладку возвратом каретки.

0 голосов
/ 18 октября 2018

Вы можете использовать это awk:

awk -F '\t' 'NR>1{printf ">%s\n%s\n", $6, $2}' file

>OSBS_087-M-32-18-20140227-gen
TCCCTTGTCTCC
>OSBS_048-M-37-33-20140227-gen
ACGAGACTGATT
>OSBS_048-M-15-31-20140227-gen
GCTGTACGGATT
>OSBS_047-M-20-3-20140227-gen
ATCACCAGGTGT
>OSBS_119-M-18-38-20140227-gen
TGGTCAACGATA
>OSBS_047-M-22-36-20140227-gen
ATCGCACAGTAA
>OSBS_087-M-40-21-20140227-gen
GTCGTGTAGCCT
>OSBS_048-M-5-11-20140227-gen
AGCGGAGGTTAG
>OSBS_119-M-27-5-20140227-gen
ATCCTTTGGTTC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...