2015-11-01 106 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”,然后按数字排序。

相关问题