Tôi muốn sắp xếp các ký tự trong một chuỗi.Cách sắp xếp các ký tự trong một chuỗi?
Ví dụ:
echo cba | sort-command
abc
Có một câu lệnh này sẽ cho phép tôi làm điều này hoặc tôi sẽ phải viết một kịch bản awk
để lặp qua chuỗi và sắp xếp nó?
Tôi muốn sắp xếp các ký tự trong một chuỗi.Cách sắp xếp các ký tự trong một chuỗi?
Ví dụ:
echo cba | sort-command
abc
Có một câu lệnh này sẽ cho phép tôi làm điều này hoặc tôi sẽ phải viết một kịch bản awk
để lặp qua chuỗi và sắp xếp nó?
echo cba | grep -o . | sort |tr -d "\n"
Đây là gian lận (vì nó sử dụng Perl), nhưng hoạt động. :-P
echo cba | perl -pe 'chomp; $_ = join "", sort split //'
Hãy tìm ra phương pháp hữu ích sau đây:
Shell
Sắp xếp chuỗi dựa trên nhân vật của mình:
echo cba | grep -o . | sort | tr -d "\n"
Chuỗi tách bằng dấu cách:
echo 'dd aa cc bb' | tr " " "\n" | sort | tr "\n" " "
Perl
print (join “”, sort split //,$_)
của Ruby
ruby -e 'puts "dd aa cc bb".split(/\s+/).sort'
Bash
Với bash bạn phải liệt kê từng ký tự từ một chuỗi, trong một cái gì đó chung chung như:
str="dd aa cc bb";
for ((i = 0; i < ${#str[@]}; i++)); do echo “${str[$i]}”; done
Để sắp xếp mảng, vui lòng kiểm tra: How to sort an array in bash?
Một perl
một liner
$ 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
tùy chọn
@F
mảng@F
được in
này cũng sẽ làm việc dòng khôn ngoan cho cho tập tin đầu vào
$ cat ip.txt
idea
cold
spare
umbrella
$ perl -F -lane 'print sort @F' ip.txt
adei
cdlo
aeprs
abellmru
hay Ruby;) 'vang cba | ruby -e 'đặt ARGF.read.split (% r {\ s *}). sort.join'' –