2016-02-14 2 views
0

Я пытаюсь использовать команду sort для сортировки целых чисел в строке, разделенной пробелом. Например, 8 6 5 7 9 56 -20 - 10. Я получаю строку на стандартном выходе. Я попробовал все из них, но ничего не работает:Использование сортировки с пространством в качестве разделителя полей

sort -t' ' 
sort -t ' ' 
sort -t " " 
sort -t" " 
sort -t=" " 
+0

От 'man sort':" sort ** lines ** of text " – Cyrus

ответ

1
echo "8 6 5 7 9 56 -20 - 10" | tr ' ' '\n' | sort -n 

Сортировка могут только сортировать строки.

1

Вы можете сначала прочитать строку в массив с пространством в качестве разделителя используйте sort с процессом замещения:

s='8 6 5 7 9 56 -20 - 10' 
read -ra arr <<< "$s" 
sort -n <(printf "%s\n" "${arr[@]}") 

Выход:

-20 
-10 
5 
6 
7 
8 
9 
56 

Для сохранения вывода в строке снова:

read -r str < <(sort -n <(printf "%s\n" "${arr[@]}") | tr '\n' ' ') 

И проверить выход:

declare -p str 
declare -- str="-20 -10 5 6 7 8 9 56" 
Смежные вопросы