给定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是一个非常接近的匹配,但并不能完全回答我的问题。
答案 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