У меня есть два файла; файл 1:Linux merge files awk command
ARS-BFGL-BAC-10975 0.9303 688423261 1 01/04/2015 0.9983763305
ARS-BFGL-BAC-11025 0.9092 688423261 1 01/04/2015 0.9983763305
ARS-BFGL-BAC-11044 0.9626 688423261 2 01/04/2015 0.9983763305
ARS-BFGL-BAC-11193 0.9544 688423261 1 01/04/2015 0.9983763305
ARS-BFGL-BAC-10975 0.9303 688423263 1 01/04/2015 0.9983763000
ARS-BFGL-BAC-11025 0.9082 688423263 1 01/04/2015 0.9983763000
ARS-BFGL-BAC-11044 0.9926 688423263 2 01/04/2015 0.9983763000
ARS-BFGL-BAC-11193 0.9144 688423263 1 01/04/2015 0.9983763000
Второй файл, файл 2:
ARS-BFGL-BAC-10975 10 21225382
ARS-BFGL-BAC-11025 10 84516867
ARS-BFGL-BAC-11193 1 29303546
Нужный выход:
ARS-BFGL-BAC-10975 0.9303 688423261 1 01/04/2015 0.9983763305 10 21225382
ARS-BFGL-BAC-11025 0.9092 688423261 1 01/04/2015 0.9983763305 10 84516867
ARS-BFGL-BAC-11193 0.9544 688423261 1 01/04/2015 0.9983763305 1 29303546
ARS-BFGL-BAC-10975 0.9303 688423263 1 01/04/2015 0.9983763000 10 21225382
ARS-BFGL-BAC-11025 0.9992 688423263 1 01/04/2015 0.9983763000 10 84516867
ARS-BFGL-BAC-11193 0.9144 688423263 1 01/04/2015 0.9983763000 1 29303546
Так файл 1 имеет гораздо больше строк, чем файл 2. Я только хочу сохраняйте строки на выходе, которые находятся в файле 2 на основе первого столбца, поэтому я хочу, чтобы ARS-BFGL-BAC-10975
повторялось столько раз, сколько в столбце 1, как показано в файле 2, но я не хочу, чтобы ARS-BFGL-BAC-11044
в вывода, поскольку он никогда не появляется в файле 2.
Ближайшее я имею следующую команду awk, но это не позволяет дублировать ARS-BFGL-BAC-10975
, то есть я сливаюсь только с длиной файла 2, когда мой вывод должен быть много дольше.
awk 'FNR==NR{a[$1]=$2 FS $3;next} $1 in a {print $0, a[$1]}' file2 file1 > output
Ну, теперь мой ответ выглядит немного глупым;) –
ну, это воскресенье ночью ... – karakfa
Привет, спасибо, что вернулись. – dcp1234