Bash 使用另一个文件中的指定顺序对文件中的行进行排序
给定一个文件1Bash 使用另一个文件中的指定顺序对文件中的行进行排序,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
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