1 (17.06.2014 09:52:56 отредактировано fragment)

Команда sort почему-то работает только если слова находятся каждое в новой строке (т.е. в столбец), а как отсортировать слова, расположенные в одной строке через пробел?

Ну или подскажите, как превратить такую строку в столбец, не прибегая к echo в файл?

2

fragment пишет:

Ну или подскажите, как превратить такую строку в столбец, не прибегая к echo в файл?

Примерно так

 Консоль:
~/ echo "qwer abc 3 wert zxy" | sed 's/\ /\n/g' | sort
3
abc
qwer
wert
zxy

Был, был и весь вышел...

3

Да, уже нашёл, но это не подходит. Надо всё же отсортировать слова в строке.

4 (17.06.2014 10:16:24 отредактировано Lupo Alberto)

Вот, «накостылил»   al

 Консоль:
/tmp/ cat test.txt
qwer abc 3 wert zxy
/tmp/ sed 's/\ /\n/g' test.txt | sort | sed ':a; /$/N; s/\n/\ /; ta' > new.txt
/tmp/ cat new.txt
3 abc qwer wert zxy

Был, был и весь вышел...

5

Ну сделай из них снова строку, например

a=`echo "qwer abc 3 wert zxy" | sed 's/\ /\n/g' | sort`
for k in $a
do
    echo -n "$k "
done

6

Lupo Alberto, в том и дело, что хотелось бы обойтись без помощи промежуточных файлов, всё чисто в переменных.

7

/tmp/ cat test.txt                                           
qwer abc 3 wert zxy
/tmp/ sed 's/\ /\n/g' test.txt | sort | tr '\n' ' ' > new_1.txt
/tmp/ cat new_1.txt
3 abc qwer wert zxy
Был, был и весь вышел...

8

Мой пример чисто в переменных.

9

Vascom, спасибо, то, что надо.

10

Неужели трудно?

echo "asd 123 rewt 567 897 hgd " | sed 's/\ /\n/g' | sort | tr '\n' ' '
 123 567 897 asd hgd rewt 
Был, был и весь вышел...

11

Да, так эстетичнее.

12 (17.06.2014 12:21:58 отредактировано -=Serj=-)

 echo "qwer abc 3 wert zxy" | xargs -n1 | sort | xargs
python -c "print(' '.join(sorted('qwer abc 3 wert zxy'.split())))"
Да, у меня Ubuntu.
Нет, не глючит.

13

-=Serj=- пишет:
 echo "qwer abc 3 wert zxy" | xargs -n1 | sort | xargs

Так ещё эстетичнее.

Был, был и весь вышел...