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

Bash 使用另一个文件中的指定顺序对文件中的行进行排序,bash,file,sorting,Bash,File,Sorting,给定一个文件1 a b c d e f h n o p q i j k l m 和另一个文件2 3 1 0 1 2 我想按照文件2中给出的顺序对文件1进行排序。输出应为: n o p q e f h i j k l m a b c d 基本上,我如何将file2作为前缀列添加到file1前面,并按该列排序,然后删除前缀列 答案非常接近,但并不完全回答我的问题。粘贴是你的朋友: paste f2 f1 | sort | cut -d$'\t' -f2- 分步骤: $ paste f2 f1

给定一个文件1

a b c d
e f h
n o p q
i j k
l m
和另一个文件2

3
1
0
1
2
我想按照文件2中给出的顺序对文件1进行排序。输出应为:

n o p q
e f h
i j k
l m
a b c d
基本上,我如何将file2作为前缀列添加到file1前面,并按该列排序,然后删除前缀列


答案非常接近,但并不完全回答我的问题。

粘贴
是你的朋友:

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

您应该提到文件2应该按升序排列,而文件1应该使用相同的顺序。我必须阅读另一个问题才能理解你是如何获得输出的。太好了,谢谢!如果在文件1中有两行作为标题,会发生什么?(文件2中没有标题)如何在粘贴/排序中忽略它们?您可以说
paste f2