Linux 根据不同文件中的信息对文件进行排序

Linux 根据不同文件中的信息对文件进行排序,linux,shell,Linux,Shell,我有一个包含两列的文件(f1);f1如下所示: bob population1 sam population1 jen population2 amy population2 jim population3 bob population3 doc population4 allison population4 zoe population5 karla population5 population4 population1 population2 population5 population3

我有一个包含两列的文件(f1);f1如下所示:

bob population1
sam population1
jen population2
amy population2
jim population3
bob population3
doc population4
allison population4
zoe population5
karla population5
population4
population1
population2
population5
population3
在另一个文件(f2)中,我指定我希望f1中的个体如何根据其总体进行排序;f2如下所示:

bob population1
sam population1
jen population2
amy population2
jim population3
bob population3
doc population4
allison population4
zoe population5
karla population5
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

有人能给我一些建议吗?

你可以在f2中的线上循环,从f1中为每个线提取匹配线:

while read s ; do
    grep "$s" f1
done  < f2
读s时;做
grep“$s”f1
完成
或者,在没有循环的情况下

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

|sed-f-欢迎来到Stackoverflow;请详细说明你想要实现的目标;是否需要shell脚本(然后用更精确的标记,如“shell”或“script”)标记问题)?不管怎么说,你必须说出你已经尝试过的和没有达到预期效果的。