2015-05-12 3 views
6

Dato un file1:linee di scelta in un file dato l'ordine in un altro file

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

e file2:

7 x 
5 c 
14 a 
13 i 

Vorrei ordinare file1 considerando lo stesso ordine della prima colonna in file2, in modo che l'uscita dovrebbe essere:

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

e 'possibile farlo in bash o devo usare un linguaggio "alto" come py thon?

risposta

6

Utilizzare awk per inserire il numero di riga da file2 come colonna aggiuntiva davanti a file1. Ordina il risultato per quella colonna. Quindi rimuovere quella colonna prefisso

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