Команда sort почему-то работает только если слова находятся каждое в новой строке (т.е. в столбец), а как отсортировать слова, расположенные в одной строке через пробел?
Ну или подскажите, как превратить такую строку в столбец, не прибегая к echo в файл?
LinuxForum.Fans
Сортировать слова в строке
Автор: fragment
13 сообщений
4185 просмотров
Ну или подскажите, как превратить такую строку в столбец, не прибегая к echo в файл?
Примерно так
[console]~/ echo "qwer abc 3 wert zxy" | sed 's/\ /\n/g' | sort
3
abc
qwer
wert
zxy[/console]
Да, уже нашёл, но это не подходит. Надо всё же отсортировать слова в строке.
Вот, «накостылил» :-X
[console]/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[/console]
Ну сделай из них снова строку, например
text
a=`echo "qwer abc 3 wert zxy" | sed 's/\ /\n/g' | sort`
for k in $a
do
echo -n "$k "
doneLupo Alberto, в том и дело, что хотелось бы обойтись без помощи промежуточных файлов, всё чисто в переменных.
text
/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Мой пример чисто в переменных.
Vascom, спасибо, то, что надо.
Неужели трудно?
text
echo "asd 123 rewt 567 897 hgd " | sed 's/\ /\n/g' | sort | tr '\n' ' '
123 567 897 asd hgd rewt
Да, так эстетичнее.
text
echo "qwer abc 3 wert zxy" | xargs -n1 | sort | xargstext
python -c "print(' '.join(sorted('qwer abc 3 wert zxy'.split())))" textecho "qwer abc 3 wert zxy" | xargs -n1 | sort | xargs
Так ещё эстетичнее.
Войдите или зарегистрируйтесь, чтобы ответить.