如何对字符串中的字符进行排序?
问题描述:
我想排序字符串中的字符。如何对字符串中的字符进行排序?
E.g.
echo cba | sort-command
abc
是否有一个命令,让我这样做,否则我将不得不编写一个脚本awk
遍历字符串和排序呢?
答
echo cba | grep -o . | sort |tr -d "\n"
答
这是作弊(因为它使用Perl),但工程。 :-P
echo cba | perl -pe 'chomp; $_ = join "", sort split //'
答
请查找以下有用的方法:
壳牌
排序基于字符串的剧中人物:
echo cba | grep -o . | sort | tr -d "\n"
字符串用空格分隔:
echo 'dd aa cc bb' | tr " " "\n" | sort | tr "\n" " "
的Perl
print (join “”, sort split //,$_)
红宝石
ruby -e 'puts "dd aa cc bb".split(/\s+/).sort'
猛砸
使用bash,你必须从一个字符串枚举的每个字符,一般是这样的:
str="dd aa cc bb";
for ((i = 0; i < ${#str[@]}; i++)); do echo “${str[$i]}”; done
对于排序数组,请检查:How to sort an array in bash?
答
另一个perl
一个班轮
$ echo cba | perl -F -lane 'print sort @F'
abc
$ # for reverse order
$ echo xyz | perl -F -lane 'print reverse sort @F'
zyx
$ # or
$ echo xyz | perl -F -lane 'print sort {$b cmp $a} @F'
zyx
- 这将添加新行输出为好,礼貌
-l
选项- 见Command switches对文档中的所有选项
- 的输入基本上是分割字符并保存在
@F
阵列 - 然后排序
@F
印刷
这也将工作对于给定的输入文件
$ cat ip.txt
idea
cold
spare
umbrella
$ perl -F -lane 'print sort @F' ip.txt
adei
cdlo
aeprs
abellmru
或Ruby线明智;) '回波CBA | ruby -e'放入ARGF.read.split(%r {\ s *})。sort.join'' – 2010-03-03 18:58:49