Я хочу отсортировать свой файл по первому столбцу, но мне нужно начать сортировку с 5 символа. Как мне это сделать?
Мой файл:
"TTTTCTTACA" 1 1
"TTTTCTTACC" 1
"TTTTCTTACT" 1 1
"TTTTCTTAGC" 1
"TTTTCTTATT" 2
"TTTTCTTCAA" 1 1 1
"TTTTCTTCAG" 1 2 1
"TTTTCTTCAT" 1 2 2
"TTTTCTTCCT" 2
"TTTTCTTCGG" 2 2
"TTTTCTTCTA" 1
"TTTTCTTCTG" 1
"TTTTCTTCTT" 1 2
"TTTTCTTGAA" 1
"TTTTCTTGCT" 1 1 1
"TTTTCTTTAA" 1
"TTTTCTTTAG" 1 1
"TTTTCTTTCT" 1
"TTTTCTTTGC" 1
"TTTTCTTTGG" 1 1
"TTTTCTTTGT" 1 1 2 1
"TTTTCTTTTA" 1
Я пытался:
sort -k1,1 file | uniq -s 6 -w 5
Конечно, это не работает. Может быть, сортировка имеет какие-то флаги, но я их не нашел. У вас есть какие-то идеи?
решение1
вкратце
sort -k1.5 file | uniq -s 6 -w 5
Объяснение
Моя сортировка — GNU coreutils 8.22. Страница руководства для моей сортировки показывает:
KEYDEF is F[.C][OPTS][,F[.C][OPTS]] for start and stop position, where F is a field number and C
a character position in the field; both are origin 1, and the stop position defaults to the
line's end.
Таким образом, в вашей текущей команде сортировки sort -k1,1 file
в качестве сортировки используются слова от первого до первого.
То, что вам нужно (по крайней мере, для команды сортировки):
sort -k1.5 file | uniq -s 6 -w 5
Будет использован пятый символ первого слова, что и требовалось.
решение2
$sort -k2 файл
"TTTTCTTCTA" 1
"TTTTCTTCCT" 2
"TTTTCTTACC" 1
"TTTTCTTATT" 2
"TTTTCTTCGG" 2 2
"TTTTCTTCTG" 1
"TTTTCTTGAA" 1
"TTTTCTTACA" 1 1
"TTTTCTTTAG" 1 1
"TTTTCTTTGG" 1 1
"TTTTCTTCAT" 1 2 2
"TTTTCTTAGC" 1
"TTTTCTTTAA" 1
"TTTTCTTTCT" 1
"TTTTCTTTGC" 1
"TTTTCTTTTA" 1
"TTTTCTTCTT" 1 2
"TTTTCTTCAA" 1 1 1
"TTTTCTTGCT" 1 1 1
"TTTTCTTCAG" 1 2 1
"TTTTCTTACT" 1 1
"TTTTCTTTGT" 1 1 2 1
$sort -k2 файл | uniq -f 1
"TTTTCTTCTA" 1
"TTTTCTTCCT" 2
"TTTTCTTACC" 1
"TTTTCTTATT" 2
"TTTTCTTCGG" 2 2
"TTTTCTTCTG" 1
"TTTTCTTACA" 1 1
"TTTTCTTCAT" 1 2 2
"TTTTCTTAGC" 1
"TTTTCTTCTT" 1 2
"TTTTCTTCAA" 1 1 1
"TTTTCTTCAG" 1 2 1
"TTTTCTTACT" 1 1
"TTTTCTTTGT" 1 1 2 1