# 创建脚本文件
cat > \~/Desktop/word_sorter.py << 'EOF'
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
单词按首字母排序工具
支持中英文、去重、大小写处理
"""
import re
import sys
def extract_words(text):
  """从文本中提取单词(支持中英文)"""
  # 英文单词(字母开头)
  english_words = re.findall(r'[A-Za-z]+', text)
  # 中文单词(2-4个中文字符)
  chinese_words = re.findall(r'[\u4e00-\u9fff]{2,4}', text)
  return english_words + chinese_words
def sort_words(words, reverse=False, case_sensitive=False, remove_duplicates=True):
  """排序单词"""
  # 去重
  if remove_duplicates:
  words = list(dict.fromkeys(words)) # 保持顺序的去重
 
  # 排序
  if case_sensitive:
  words.sort(reverse=reverse)
  else:
  words.sort(key=str.lower, reverse=reverse)
 
  return words
def group_by_first_letter(words):
  """按首字母分组"""
  groups = {}
  for word in words:
  if word and word[0]:
  first_char = word[0].upper() if word[0].isalpha() else word[0]
  if first_char not in groups:
  groups[first_char] = []
  groups[first_char].append(word)
  return groups
def main():
  print("\n" + "="*50)
  print("📝 单词按首字母排序工具")
  print("="*50)
 
  if len(sys.argv) < 2:
  print("\n使用方法:")
  print(" 1. 直接传入单词: python word_sorter.py apple banana cat")
  print(" 2. 从文件读取: python word_sorter.py --file words.txt")
  print(" 3. 交互模式: python word_sorter.py --interactive")
  print("\n选项:")
  print(" --reverse 降序排列")
  print(" --case-sensitive 区分大小写")
  print(" --no-dedupe 保留重复词")
  print(" --group 按首字母分组显示")
  print("\n示例:")
  print(" python word_sorter.py apple Cat banana dog cat")
  print(" python word_sorter.py 苹果 香蕉 橙子 葡萄")
  print(" python word_sorter.py --group 北京 上海 广州 深圳")
  print()
  sys.exit(1)
 
  # 解析参数
  words = []
  use_group = False
  reverse = False
  case_sensitive = False
  remove_duplicates = True
 
  args = sys.argv[1:]
 
  if '--group' in args:
  use_group = True
  args.remove('--group')
  if '--reverse' in args:
  reverse = True
  args.remove('--reverse')
  if '--case-sensitive' in args:
  case_sensitive = True
  args.remove('--case-sensitive')
  if '--no-dedupe' in args:
  remove_duplicates = False
  args.remove('--no-dedupe')
 
  # 获取单词
  if '--interactive' in args:
  text = input("\n请输入单词或文本: ")
  words = extract_words(text)
  elif '--file' in args:
  file_idx = args.index('--file')
  if file_idx + 1 < len(args):
  with open(args[file_idx + 1], 'r', encoding='utf-8') as f:
  words = extract_words(f.read())
  else:
  # 直接传入单词
  words = args
 
  if not words:
  print("❌ 未找到有效单词")
  sys.exit(1)
 
  # 排序
  sorted_words = sort_words(words, reverse, case_sensitive, remove_duplicates)
 
  # 输出结果
  print(f"\n📊 输入单词数: {len(words)}")
  if remove_duplicates and len(sorted_words) < len(words):
  print(f"📊 去重后: {len(sorted_words)} 个")
 
  print(f"\n{'='*50}")
  print("📝 排序结果:")
  print('='*50)
 
  if use_group:
  groups = group_by_first_letter(sorted_words)
  for letter in sorted(groups.keys()):
  print(f"\n【{letter}】({len(groups[letter])}个)")
  for word in groups[letter]:
  print(f" • {word}")
  else:
  for i, word in enumerate(sorted_words, 1):
  print(f"{i:3}. {word}")
 
  # 统计信息
  print(f"\n{'='*50}")
  print(f"📈 统计:")
  print(f" 首字母分布: {len(group_by_first_letter(sorted_words))} 个字母")
  if len(sorted_words) > 0:
  print(f" 最长单词: {max(sorted_words, key=len)} ({len(max(sorted_words, key=len))}字符)")
  print('='*50)
if __name__ == "__main__":
  main()
EOF
# 赋予执行权限(Windows 不需要)
# chmod +x \~/Desktop/word_sorter.py