如何对字符串中的字符进行排序?

问题描述:

我想排序字符串中的字符。如何对字符串中的字符进行排序?

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 //' 
+1

或Ruby线明智;) '回波CBA | ruby -e'放入ARGF.read.split(%r {\ s *})。sort.join'' – 2010-03-03 18:58:49

请查找以下有用的方法:

壳牌

排序基于字符串的剧中人物:

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选项
  • 的输入基本上是分割字符并保存在@F阵列
  • 然后排序@F印刷


这也将工作对于给定的输入文件

$ cat ip.txt 
idea 
cold 
spare 
umbrella 

$ perl -F -lane 'print sort @F' ip.txt 
adei 
cdlo 
aeprs 
abellmru