Unix 如何对字符串中的字符进行排序?
我想对字符串中的字符进行排序 例如 是否有一个命令允许我执行此操作,或者我必须编写一个Unix 如何对字符串中的字符进行排序?,unix,command-line,sorting,Unix,Command Line,Sorting,我想对字符串中的字符进行排序 例如 是否有一个命令允许我执行此操作,或者我必须编写一个awk脚本来迭代字符串并对其排序?这是欺骗(因为它使用Perl),但有效:-P echo cba | perl -pe 'chomp; $_ = join "", sort split //' 请找到以下有用的方法: 壳牌公司 print (join "", sort split //,$_) 根据字符串的字符对字符串进行排序: echo cba | grep -o . | sort | tr -d "\n
awk
脚本来迭代字符串并对其排序?这是欺骗(因为它使用Perl),但有效:-P
echo cba | perl -pe 'chomp; $_ = join "", sort split //'
请找到以下有用的方法: 壳牌公司
print (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
使用bash,您必须枚举字符串中的每个字符,通常类似于:
str="dd aa cc bb";
for (( i = 0; i < ${#str[@]}; i++ )); do echo "${str[$i]}"; done
str=“dd aa cc bb”;
对于((i=0;i<${str[@]};i++);做回显“${str[$i]}”;完成
对于排序数组,请检查:?另一个
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
或者红宝石;)
echo cba | ruby-e'put ARGF.read.split(%r{\s*}).sort.join'
为什么不能用上面描述的方法来完成?排序不能将stdin作为输入吗?grep-o。
是一种在使用sort
$ cat ip.txt
idea
cold
spare
umbrella
$ perl -F -lane 'print sort @F' ip.txt
adei
cdlo
aeprs
abellmru