首页 > 解决方案 > 查找两个字符的字母/数字的所有组合,类似于数字的 jot(1)

问题描述

我想在 shell 中获取两个字符的小写拉丁字母和数字的所有组合。以 , ...开头,以, 00...,0a结尾。z0zz

如果这只是个位数,则可以使用jot(1)with完成jot 10 0

事实证明,只有单字符字母也可以使用jot -w %c 26 a.

我想我可以将上面的内容与嵌套的显式for循环结合起来,总共进行四个jot调用(每个循环中两个),然后将它们混合在一起,但是有更好的解决方案吗?

要求:必须在 *BSD 和 OS X 上工作;jot,awk并且perl可用。

标签: shellperlawkscripting

解决方案


结合jenesaisquoiDavid C. Rankin的答案,最短的解决方案似乎需要bashtcsh并且 OpenBSDksh不支持echo {0..9}扩展),如下所示:

bash -c 'printf "%s\n" {{0..9},{a..z}}{{0..9},{a..z}}.suffix'

当然,如果\n不需要,它甚至可以比上面的更短:

bash -c 'echo {{0..9},{a..z}}{{0..9},{a..z}}.suffix'

zdim和ikegami优化的下一个最佳解决方案,也是第一个符合要求的解决方案,是使用 perl:

perl -E'@w=(0..9,a..z);map{$w=$_;say"$w$_.suffix"for@w}@w;'

推荐阅读