Сортировка строк в одном файле по порядку в другом файле

дали файл1:

13 a b c d
5 f a c d
7 d c g a
14 a v s d

и файл2:

7 x
5 c
14 a
13 i

Я хотел бы отсортировать file1 с учетом того же порядка первого столбца в file2, чтобы вывод был:

7 d c g a
5 f a c d
14 a v s d
13 a b c d

можно ли это сделать в bash или я должен использовать какой-то" более высокий " язык, такой как python?

1 ответов


использовать awk поставить номер строки file2 в качестве дополнительного столбца перед file1. Сортировать результаты по этому столбцу. Затем удалите этот префиксный столбец

awk 'FNR == NR { lineno[] = NR; next}
     {print lineno[], ;}' file2 file1 | sort -k 1,1n | cut -d' ' -f2-