Как не удалить заголовок при выполнении awk - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть файл file, например:

k_1_1
k_1_3
k_1_6
...

У меня есть файл file2:

0,1,2,3,...
k_1_1,17,16,15,...
k_1_2,17,89,15,...
k_1_3,10,26,45,...
k_1_4,17,16,15,...
k_1_5,10,26,45,...
k_1_6,17,16,15,...

...

Я хочу напечатать строки file2, то естьсоответствует file Требуемый вывод:

0,1,2,3,...
k_1_1,17,16,15,...
k_1_3,10,26,45,...
k_1_6,17,16,15,...

Я пытался

awk 'BEGIN{FS=OFS=","}NR==FNR{a[$1];next}$1 in a {print $0}' file file2 > result

Но строка заголовка пропала в результате, как это:

k_1_1,17,16,15,...
k_1_3,10,26,45,...
k_1_6,17,16,15,... 

Как это можно поддерживать?Спасибо.

Ответы [ 3 ]

0 голосов
/ 14 ноября 2018

Не могли бы вы попробовать следующее.

awk -F, 'FNR==NR{a[$1]=$0;next} FNR==1 && ++count==1{print;next} a[$1]' Input_file  Input_file2

OR

awk -F, 'FNR==NR{a[$1]=$0;next} FNR==1{print;next} a[$1]' Input_file Input_file2
0 голосов
/ 14 ноября 2018

Очень специальным решением вашей проблемы может быть составление вывода в группе команд:

{ head -1 file2; awk 'BEGIN{FS=OFS=","}NR==FNR{a[$1];next}$1 in a {print $0}' file file2; } > result
0 голосов
/ 14 ноября 2018

Всегда печатать первую строку безоговорочно.

awk 'BEGIN{FS=OFS=","}
    NR==FNR{a[$1];next}
    FNR==1 || $1 in a' file file2 > result

Обратите внимание также, что { print $0 } не является необходимым, потому что это действие по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...