2015-11-01 88 views
-1

我有一個包含兩列的文件(f1) F1看起來如下:根據來自不同文件的信息對文件進行排序

bob population1 
sam population1 
jen population2 
amy population2 
jim population3 
bob population3 
doc population4 
allison population4 
zoe population5 
karla population5 

在不同的文件(F2),我指定我多麼想在F1個體進行排序基於其人口; F2看起來如下:

population4 
population1 
population2 
population5 
population3 

我找下面的結果:

doc population4 
allison population4 
bob population1 
sam population1 
jen population2 
amy population2 
zoe population5 
karla population5 
jim population3 
bob population3 

任何人都可以請給我就如何實現這一結果的建議?

+0

歡迎來到Stackoverflow;請告訴你更多細節你想達到的目標;你想要shell腳本(然後用更加精確的標籤,比如「shell」或「script」來標記你的問題)?無論如何,你必須告訴你已經嘗試過什麼,以及沒有按照你的預期行事。 –

回答

1

可以循環在從f 2的線,提取從f1的匹配線爲每一個:

while read s ; do 
    grep "$s" f1 
done < f2 

或者,無環,的

nl f2 \ 
| sed 's=\([0-9]\+\)\t\(.*\)=s/\2/\1 \2/=' \ 
| sed -f- <(nl f1) \ 
| sort -nk3,3 

即數的行一些變化在兩個文件中,用相應的數字替換「populationX」,然後按數字排序。

相關問題