Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 如何对字符串中的字符进行排序?_Unix_Command Line_Sorting - Fatal编程技术网

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