python - Bash:按字节区分大小写的排序命令或使用 python 排序命令对文本文件进行排序

标签 python linux bash sorting case

文本文件
使用排序-s (区分大小写)

Act
Bad
Bag
Card
East
about
across
back
ball
camera
canvas
danger
dark
early
edge

使用 sort -f(不区分大小写)

about
across
Act
back
Bad
Bag
ball
camera
canvas
Card
danger
dark
early
East
edge

以大写字母开头的单词在小写单词之间按字母顺序排序。

我想要的是大写单词位于每个下一个字母的开头(按大写字母顺序排序):
预期输出:

Act
about
across
Bad
Bag
back
ball
Card
camera
canvas
danger
dark
East
early
edge

如何使用 bash 或 python sort 命令实现这一点?

最佳答案

这个命令可以做到:

LC_ALL=C sort -k 1.1f,1.1 PATH

PATH 是您的文件路径。

解释:

  • sort 整理顺序受当前语言环境影响,因此 LC_ALL=C 用于将语言环境设置为已知值(POSIX 语言环境,整理顺序基于ASCII 字符代码值)
  • -k 1.1f,1.1 告诉 sort 以不区分大小写的方式使用第一个字符作为主要排序键
  • 主键的相等比较将通过再次比较所有字符来解决(这次以区分大小写的方式)。

输出完全符合问题中的要求。

关于python - Bash:按字节区分大小写的排序命令或使用 python 排序命令对文本文件进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35669702/

相关文章:

python - Opencv VideoCapture 在 Heroku 上总是返回 false

python - 在 Python 3 中解码十六进制字符串

android - 如何执行 shell 文件?

Python、BeautifulSoup - <div> 文本和 <img> 属性顺序正确

python - 如果pickle文件中不存在对象,则创建新对象,如果存在则加载它(多个对象的最佳方法?)

php - UTF-8贯穿始终

linux - 有没有一种方法可以在我的终端屏幕上显示标准输出并重定向到一个文件?

bash - 在 bash 中使用 $RANDOM + $FLOOR 有什么问题?

linux - 根据输入视频分辨率使用 ffmpeg 自动调整视频大小

bash - 从引用列表中替换文件中的字符串