как добавить файл во второй столбец другого файла TSV - PullRequest
0 голосов
/ 23 октября 2018

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

45
56
74
62

Я хочу добавить этот файл в файл second.tsv, который выглядит следующим образом (всего 17 столбцов):

2   a   ...
3   b   ...
5   c   ...
6   d   ...

Желаемый результат:

2   45   a   ...
3   56   b   ...
5   74   c   ...
6   62   d   ...

Как добавить второй столбец?Я пытался

awk -F, '{getline f1 <"first.txt" ;print $1,f1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17}'  second.tsv 

, но не работал.Это добавило столбцы first.txt к последнему столбцу second.tsv и не было разделено табуляцией.Спасибо.

Ответы [ 2 ]

0 голосов
/ 23 октября 2018
$ awk 'NR==FNR{a[FNR]=$0;next} {$1=$1 OFS a[FNR]} 1' file1 file2
2 45 a ...
3 56 b ...
5 74 c ...
6 62 d ...

Если ваши файлы разделены табуляцией, добавьте BEGIN{FS=OFS="\t"} впереди.

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

Ваш код работает, если вы удалите бит -F,.Это говорит awk, что файл разделен запятыми, а это не так.

Другой вариант - перейти к версии с конвейером с paste, например:

paste first.tsv second.tsv | awk '{ t=$2; $2=$1; $1=t } 1' OFS='\t'

Вывод:

2   45  a   ...
3   56  b   ...
5   74  c   ...
6   62  d   ...
...