我有一长串这样的数字:
1234-212-22-11153782-0114232192380
8807698823332-6756-234-14-09867378
45323-14-221-238372635363-43676256
62736373-9983-23-234-8863345637388
. . . .
. . . .
Run Code Online (Sandbox Code Playgroud)
我想做两件事:
1)按每个段内的位数对这个列表进行排序,输出应该是这样的:
22-212-1234-11153782-0114232192380
14-234-6756-09867378-8807698823332
14-221-45323-43676256-238372635363
23-234-9983-62736373-8863345637388
Run Code Online (Sandbox Code Playgroud)
2) 求每行子串的个数,输出应为:
2-3-4-8-13
2-3-4-8-13
2-3-5-8-12
2-3-4-8-13
Run Code Online (Sandbox Code Playgroud)
在此示例中,每个数字的第一、第二和第三段具有相同的数字,但它们可能不同。
怎么样
$ 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
Run Code Online (Sandbox Code Playgroud)
和
$ 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
Run Code Online (Sandbox Code Playgroud)
感谢Stéphane Chazelas提出的改进建议
归档时间: |
|
查看次数: |
493 次 |
最近记录: |