bash-скриптинг: как отсортировать строку в виде «number.text number.text и т. д.» в порядке возрастания? - PullRequest
1 голос
/ 20 октября 2011

например, если у нас есть переменная с именем "var"

строка "2.test 1.test 9.test"

я хочу, чтобы это было

1.test 2.test 9.test

Я пытался применить эту команду

    echo $var | sort -n

но вывод неправильный, потому что, если, например, у меня есть

2.text 11.text

будет напечатано

11.text 2.text, что неверно, потому что 11> 2

спасибо

Ответы [ 2 ]

1 голос
/ 05 декабря 2011

конвертировать пробелы в разрывы строк с tr;а теперь sort;и преобразовывать переносы строк обратно в пробелы

echo "2.test 1.test 9.test" |tr "" "\ n" |сортировать |tr "\ n" ""

пс.видел это где-то на форуме

1 голос
/ 20 октября 2011

sort работает над строками, а не над словами.

Для примера, который вы нам показали, вы сортируете одну строку текста. Например:

$ echo 2.text 11.text 3.text | sort -n
2.text 11.text 3.text

Но это не согласуется с результатами, которые вы нам показали, поэтому я не могу быть уверен, что вы делаете или что вы пытаетесь сделать.

Вы ищете что-то подобное?

$ echo 2.text 11.text 3.text | fmt -1
2.text
11.text
3.text
$ echo 2.text 11.text 3.text | fmt -1 | sort -n
2.text
3.text
11.text

А вам нужно заново собрать линии в одну линию? Пропускание вывода через fmt -999 сделает это, но это немного уродливо (GNU coreutils fmt ограничивает ширину 2500).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...