按 ASCII 顺序对 stdin 进行排序的命令

按 ASCII 顺序对 stdin 进行排序的命令

有时,GNU 排序并不符合预期。以下是示例:

> bind | sort

(假设您使用的是 fish。在 bash 中,等价于bind -p。)输出中的所有非字母字符在排序中基本上都会被忽略,从而破坏了意图。以下是输出示例:

bind --preset \e\b backward-kill-word
bind --preset \eb backward-word
bind --preset \e\[B down-or-search
bind --preset \e\< beginning-of-buffer
bind --preset \e cancel
bind --preset \ec capitalize-word
bind --preset \e\[C forward-char
bind --preset \e\[D backward-char
bind --preset \ed kill-word

我想要的是将所有\e[a-z]键绑定放在一起。如何更改 sort 的行为以严格按照 ASCII 顺序排序,将所有字符视为字母?我查看了手册页,没有找到任何有用的东西。

答案1

您说得对,完全随机的陌生人。sort 的命令行开关中没有此选项。但 sort 可以以这种方式运行。您所要做的就是更改语言环境:

> bind | LANG=C sort
...
bind --preset \e\x7f backward-kill-word
bind --preset \eb backward-word
bind --preset \ec capitalize-word
bind --preset \ed kill-word
bind --preset \ee edit_command_buffer
bind --preset \ef forward-word
bind --preset \eh __fish_man_page
bind --preset \el __fish_list_current_token
...

相关内容