使用另一个文件中的指定顺序对文件中的行进行排序

时间:2015-07-17 12:08:20

标签: bash file sorting

给定file1

a b c d
e f h
n o p q
i j k
l m

和另一个文件2

3
1
0
1
2

我想按照file2中给出的顺序对file1进行排序。输出应该是:

n o p q
e f h
i j k
l m
a b c d

基本上,如何将file1前面的file2添加为前缀列,并按该列排序,然后删除前缀列?

答案here是一个非常接近的匹配,但并不能完全回答我的问题。

1 个答案:

答案 0 :(得分:4)

paste是你的朋友:

paste f2 f1 | sort | cut -d$'\t' -f2-

分步骤:

$ paste f2 f1        # join files
3   a b c d
1   e f h
0   n o p q
1   i j k
2   l m
$ paste f2 f1 | sort # sort them
0   n o p q
1   e f h
1   i j k
2   l m
3   a b c d
$ paste f2 f1 | sort | cut -d$'\t' -f2-  # remove 1st column
n o p q
e f h
i j k
l m
a b c d