次のような長い数字のリストがあります。
1234-212-22-11153782-0114232192380
8807698823332-6756-234-14-09867378
45323-14-221-238372635363-43676256
62736373-9983-23-234-8863345637388
. . . .
. . . .
私は2つのことをしたい:
1)各セグメント内のビット数に基づいてリストを並べ替えると、出力は次のようになります。
22-212-1234-11153782-0114232192380
14-234-6756-09867378-8807698823332
14-221-45323-43676256-238372635363
23-234-9983-62736373-8863345637388
2)各行の部分文字列の数を見つけると、出力は次のようになります。
2-3-4-8-13
2-3-4-8-13
2-3-5-8-12
2-3-4-8-13
この例では、各番号の第1、第2、第3のセグメントは同じ番号を有するが異なる場合がある。
ベストアンサー1
どうですか?
$ perl -F'-' -lpe '$_ = join "-", sort { length $a <=> length $b } @F' file
22-212-1234-11153782-0114232192380
14-234-6756-09867378-8807698823332
14-221-45323-43676256-238372635363
23-234-9983-62736373-8863345637388
そして
$ perl -F'-' -lpe '$_ = join "-", sort { $a <=> $b } map length, @F' file
2-3-4-8-13
2-3-4-8-13
2-3-5-8-12
2-3-4-8-13
ありがとうスティーブン・チャジェラス提案された改善点