Объединять файлы с разделителями в виде табуляции один без другого - PullRequest
0 голосов
/ 13 мая 2018

Привет, у меня есть два текстовых файла с разделителями табуляции

file.1.txt

Chr Start   End Ref Alt
chr1    4204560 4204560 T   C
chr1    9471179 9471181 ATA -
chr1    9471230 9471230 A   C
chr1    9471247 9471247 T   C
chr1    9471254 9471254 C   A
chr1    9471261 9471262 AA  -
chr1    9471262 9471262 A   C

И file.2.txt

Chr Start   End Ref Alt
chr1    9471268 9471268 -   ACT
chr1    9471274 9471274 A   C
chr1    9471275 9471275 A   C
chr1    9471284 9471284 T   C
chr1    9471297 9471297 T   C
chr1    9471302 9471302 T   C
chr1    9471312 9471312 A   C

Теперь, если я хочу объединить эти два файла таким образом, чтобы исключить строку заголовка второго файла и объединить файлы один за другим

Chr Start   End Ref Alt
chr1    4204560 4204560 T   C
chr1    9471179 9471181 ATA -
chr1    9471230 9471230 A   C
chr1    9471247 9471247 T   C
chr1    9471254 9471254 C   A
chr1    9471261 9471262 AA  -
chr1    9471262 9471262 A   C
chr1    9471268 9471268 -   ACT
chr1    9471274 9471274 A   C
chr1    9471275 9471275 A   C
chr1    9471284 9471284 T   C
chr1    9471297 9471297 T   C
chr1    9471302 9471302 T   C
chr1    9471312 9471312 A   C

Как это сделать с помощью команды awk или скрипта оболочки?

P.S. Количество столбцов в реальных файлах равно 168.

Ответы [ 4 ]

0 голосов
/ 13 мая 2018

Любая причина не просто сделать:

cat file1; tail +2 file2
0 голосов
/ 13 мая 2018

После awk также может помочь вам в этом.

awk 'FNR==NR{print;next} FNR!=NR && FNR>1{print}' file1.txt file2.txt

ИЛИ, точнее, не нужно FNR!=NR:

awk 'FNR==NR{print;next} FNR>1{print}' file1.txt file2.tx
0 голосов
/ 13 мая 2018

Еще один awk:

$ awk 'p<FNR;{p=FNR}' file1 file2

выходы:

Chr Start   End Ref Alt
chr1    4204560 4204560 T   C
chr1    9471179 9471181 ATA -
chr1    9471230 9471230 A   C
chr1    9471247 9471247 T   C
chr1    9471254 9471254 C   A
chr1    9471261 9471262 AA  -
chr1    9471262 9471262 A   C
chr1    9471268 9471268 -   ACT
chr1    9471274 9471274 A   C
chr1    9471275 9471275 A   C
chr1    9471284 9471284 T   C
chr1    9471297 9471297 T   C
chr1    9471302 9471302 T   C
chr1    9471312 9471312 A   C

т.е.вывод, если предыдущий FNR p меньше текущего.

0 голосов
/ 13 мая 2018

Вы можете использовать следующие awk:

awk 'FNR > 1 || NR == 1' file1 file2

Chr Start   End Ref Alt
chr1    4204560 4204560 T   C
chr1    9471179 9471181 ATA -
chr1    9471230 9471230 A   C
chr1    9471247 9471247 T   C
chr1    9471254 9471254 C   A
chr1    9471261 9471262 AA  -
chr1    9471262 9471262 A   C
chr1    9471268 9471268 -   ACT
chr1    9471274 9471274 A   C
chr1    9471275 9471275 A   C
chr1    9471284 9471284 T   C
chr1    9471297 9471297 T   C
chr1    9471302 9471302 T   C
chr1    9471312 9471312 A   C

Или, используя просто cat и tail:

cat file1; tail -n +2 file2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...