我有一个包含两列的文件(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 :(得分:1)
你可以循环来自f2的行,从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”替换为其对应的数字,然后按数字排序。