У меня есть два файла, оба содержат одинаковое содержимое и отсортированы по awk 'NR == 1; NR > 1 {print $0 | "sort -n"}'
file1.tmp
:
contigID:totalAvgDepth
2011_07_08_contig_100000:3.17112
2011_07_08_contig_100001:1.81928
2011_07_08_contig_100002:2.96875
2011_07_08_contig_100003:2.37912
и file2.tmp
:
contigID:GCContent
2011_07_08_contig_100000:59.6439169139466
2011_07_08_contig_100001:36.0759493670886
2011_07_08_contig_100002:67.6470588235294
2011_07_08_contig_100003:65.0602409638554
2011_07_08_contig_100004:64.7409172126266
Я использую join -t':' file1.tmp file2.tmp > merged.txt
, и в конце я получаю эту ошибку:
join: file2.tmp:8: is not sorted: 2011_07_08_contig_10000:60.0273317389819
join: file1.tmp:16: is not sorted: 2011_07_08_contig_10001:3.16236
Когда я проверяю вручную, первый 2011_07_08_contig_10000
присутствует в file1.tmp
и file2.tmp
, но не присутствует в merged.txt
. Однако 2011_07_08_contig_10001:
присутствует везде.
Итак, я задаю следующие вопросы:
- Какой шаг работает неправильно?
- Как я могу это исправить?
- Когда я проверяю
wc -l file1.tmp file2.tmp merged.txt
, я получаю странный вывод
394278 file1.tmp
394278 file2.tmp
359112 merged.txt
, поскольку я ожидаю, что merged.txt
будет идентичным file1,2
с точки зрения строк. Как правильно «выровнять» их?
Там явно что-то не так, есть идеи? Возможно, есть лучший способ?