2014-01-08 4 views
1
[1.txt] 
Sample10_1.fq.gz 
Sample11_1.fq.gz 
Sample12_1.fq.gz 
Sample1_1.fq.gz 
Sample13_1.fq.gz 

[2.txt] 
Sample10_2.fq.gz 
Sample11_2.fq.gz 
Sample12_2.fq.gz 
Sample1_2.fq.gz 
Sample13_2.fq.gz 

Как вы можете видеть, разница только после цифры «_».Unix sort: несовместим между 2 файлами

Во всяком случае, вот результаты рода:

[sort 1.txt] 
Sample10_2.fq.gz 
Sample11_2.fq.gz 
Sample12_2.fq.gz 
Sample1_2.fq.gz 
Sample13_2.fq.gz 

[sort 2.txt] 
Sample10_1.fq.gz 
Sample11_1.fq.gz 
Sample1_1.fq.gz 
Sample12_1.fq.gz 
Sample13_1.fq.gz 

Расхождение: "Sample1_" сортируется между "Sample12" и "Sample13" в 1.txt, но это между "Sample11" и "Sample12" в 2.txt.

Я делаю что-то неправильно, чтобы сделать это несоответствие случаем?

ответ

1

Использование sort -V

cat 1.txt | sort -V 
Sample1_1.fq.gz 
Sample10_1.fq.gz 
Sample11_1.fq.gz 
Sample12_1.fq.gz 
Sample13_1.fq.gz 
+0

спасибо, но 'рода -n' производит тот же порядок. Результат для меня не имеет смысла. В обоих файлах символы, которые должны быть отсортированы в 8-й позиции каждой строки, являются (\ _, 0,1,2,3), но «\ _» сортируется между 1 и 2 в первом файле, но 2 и 3 во втором файле. Похоже, что 'sort' рассматривает характер _after_ текущей позиции, что кажется неправильным. – PJx

+0

К сожалению. '-n',' -g', '-h' и друзья обрабатывают всю строку как число. '-V' рассматривает его как« строку версии », и это то, что вы хотите. – U2EF1

Смежные вопросы