我有以下两个文件:
文件1:
4 rs10000007 C A 0.006562 762
4 rs10000008 T C 0.01575 762
4 rs10000009 G A 0 762
12 rs1000000 A G 0.2388 762
4 rs10000010 C T 0.4921 762
4 rs10000003 A G 0.2992 762
4 rs10000005 G A 0.4409 762
4 rs10000012 G C 0.1417 762
4 rs10000006 C T 0.02625 762
4 rs10000011 T C 0.03675 762
file2的:
sort -f -k 2 file1 > file1.sorted
sort -f -k 2 file2 > file2.sorted
我使用sort来根据第2列对这些文件进行排序,第2列包含两个文件的相同值。
12 rs1000000 0 126890980 A G
4 rs10000003 0 57561647 A G
4 rs10000005 0 85161558 G A
4 rs10000006 0 108826383 C T
4 rs10000007 0 114553253 C A
4 rs10000008 0 172776204 T C
4 rs10000009 0 71048953 G A
4 rs10000010 0 21618674 C T
2 rs1000001 0 50711642 T G
4 rs10000011 0 138223055 T C
但是,我得到两个不同的排序文件:
file1.sorted:
4 rs10000003 A G 0.2992 762
4 rs10000005 G A 0.4409 762
4 rs10000006 C T 0.02625 762
4 rs10000007 C A 0.006562 762
4 rs10000008 T C 0.01575 762
4 rs10000009 G A 0 762
12 rs1000000 A G 0.2388 762
4 rs10000010 C T 0.4921 762
4 rs10000011 T C 0.03675 762
4 rs10000012 G C 0.1417 762
file2.sorted:
for (Object e : messages) {
Object[] data = (Object[]) e;
System.out.println(Array.getLength(e)+" ---------------- IS THE LENGTH");
System.out.println(data[0]+" ---------------- IS THE FIRST ELEMENT");
}
我在这里缺少什么?如何以相同的方式对这两个文件进行排序?这对我来说无关紧要,只要我可以使用join来加入这两个文件。非常感谢!
答案 0 :(得分:2)
使用-k 2,2
仅根据第二列进行排序。 -k 2
表示从第2列开始排序
$ sort -f -k 2,2 file2
12 rs1000000 A G 0.2388 762
4 rs10000003 A G 0.2992 762
4 rs10000005 G A 0.4409 762
4 rs10000006 C T 0.02625 762
4 rs10000007 C A 0.006562 762
4 rs10000008 T C 0.01575 762
4 rs10000009 G A 0 762
4 rs10000010 C T 0.4921 762
4 rs10000011 T C 0.03675 762
4 rs10000012 G C 0.1417 762
使用-b
选项忽略前导空白,例如:sort -bf -k 2,2 file2