Подтвердить что ты не робот

Сортировка файла с разделителями табуляции на основе команды сортировки столбцов bash

Я пытаюсь сортировать этот файл на основе четвертого столбца. Я хочу, чтобы файл был переупорядочен на основе значений четвертого столбца.

Файл:

2   1:103496792:A   0   103496792
3   1:103544434:A   0   103544434
4   1:103548497:A   0   103548497
1   1:10363487:T    0   10363487

Я хочу, чтобы он отсортировался следующим образом:

1   1:10363487:T    0   10363487
2   1:103496792:A   0   103496792
3   1:103544434:A   0   103544434
4   1:103548497:A   0   103548497

Я пробовал эту команду:

sort -t$'\t' -k1,1 -k2,2 -k3,3 -k 4,4 <filename>

Но я получаю неправильную ошибку имени переменной. Может кто-нибудь помочь мне с этим?

4b9b3361

Ответ 1

Для сортировки в четвертом столбце используйте только селектор -k 4,4.

sort -t $'\t' -k 4,4 <filename>

Вам также может понадобиться -V, который сортирует номера более естественно. Например, уступая 1 2 10, а не 1 10 2 (лексикографический порядок).

sort -t $'\t' -k 4,4 -V <filename>

Если вы получаете ошибки в $'\t', убедитесь, что ваша оболочка bash. Возможно, вам не хватает #!/bin/bash в верхней части вашего script?

Ответ 2

Я считаю, что в вашей команде есть странный $.

Try:

sort -t\t -nk4