如何使用Crunch生成所有指定的IATA代码组合
使用Crunch生成IATA代码组合的操作步骤
前置准备
- 先把你手头所有的IATA代码逐行写入纯文本文件,命名为
iata_list.txt,示例内容参考:
JFK
LAX
BOS
SFO
其他你需要的IATA代码
生成带分隔符的组合
生成两两全排列组合(含正反序,如同时包含JFK/LAX、LAX/JFK)
- 调用Crunch的排列模式配合字符串处理插入分隔符即可,以
/为分隔符的命令如下:crunch 1 1 -p $(tr '\n' ' ' < iata_list.txt) | awk 'NR%2==0 {print prev"/"$0} {prev=$0}' > iata_slash_combo.txt - 参数说明:
-p开启排列模式,会自动将传入的所有IATA代码生成所有可能的排列组合tr '\n' ' ' < iata_list.txt是将逐行存储的IATA代码转换为空格分隔的列表,传给Crunch的排列参数- awk部分是将输出的两两排列用
/拼接,如果你需要换成|分隔,直接把代码里的"/"改成"|"即可 - 最终输出的
iata_slash_combo.txt就是符合要求的组合文件
生成唯一不重复的两两组合(仅保留单向组合,如仅保留JFK/LAX,过滤LAX/JFK)
- 在上一条命令的基础上增加去重逻辑即可:
crunch 1 1 -p $(tr '\n' ' ' < iata_list.txt) | awk 'NR%2==0 {print prev"/"$0} {prev=$0}' | awk -F '/' '!seen[$1>$2 ? $1"/"$2 : $2"/"$1]++' > iata_unique_combo.txt
注意事项
- 如果你的IATA代码数量较多,生成的组合量级会指数级增长,建议先拿3-5个代码测试命令效果,确认符合要求再全量运行,避免占用过多磁盘空间。
- 如果需要生成3个及以上IATA的组合,调整awk的拼接逻辑即可。
内容的提问来源于stack exchange,提问作者Ash
相关产品推荐
相关产品推荐

