shell - 查找两个字符的字母/数字的所有组合,类似于数字的 jot(1)
问题描述
我想在 shell 中获取两个字符的小写拉丁字母和数字的所有组合。以 , ...开头,以, 00
...,0a
结尾。z0
zz
如果这只是个位数,则可以使用jot(1)
with完成jot 10 0
。
事实证明,只有单字符字母也可以使用jot -w %c 26 a
.
我想我可以将上面的内容与嵌套的显式for
循环结合起来,总共进行四个jot
调用(每个循环中两个),然后将它们混合在一起,但是有更好的解决方案吗?
要求:必须在 *BSD 和 OS X 上工作;jot
,awk
并且perl
可用。
解决方案
结合jenesaisquoi和David C. Rankin的答案,最短的解决方案似乎需要bash
(tcsh
并且 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;'
推荐阅读
- ubuntu - GPG 错误:在服务器中安装 Zcash
- python - QSystemTrayIcon 更改图标
- sql - 优化嵌套查询以加入
- python - 将相同形状的动态图像数读入 Python NumPy 数组
- apache-kafka - Kafka Streams 应用程序重置工具不起作用,并且无法将主题偏移量重置为 0
- javascript - Javascript 存储 DOM HTML 元素参考
- node.js - NodeJS / 将所有请求表达到特定路径
- tfs - VSTS 身份验证中带有 accesstoken 凭据的 VssClientCredentials
- android - Gradle 版本冲突
- reactjs - 带有 react 和 material-ui 的 Asp.Net Core