按字节位置排序

Sort by byte location

我在 linux 服务器上使用 bash。我有一些数据看起来像

20130101 Z27
20170101 F40
20170501UZ24
20160701BA27
20120411 A27
20170101 Z30

我只对按字节位置 = 8-11 排序感兴趣。 GNU sort 有没有办法按这个字节范围排序?

我正在寻找与 cut-b 相似的选项,我可以在其中指定字节范围。

我可以编写一个 Python 脚本来执行此操作,但我宁愿将所有内容都保存在一个简单的 bash 脚本中,以供其他人阅读和遵循。

你可以这样做:

$ sort -t $'\n' -k 1.8,1.11 infile
20120411 A27
20160701BA27
20170101 F40
20170501UZ24
20130101 Z27
20170101 Z30

-t $'\n' 告诉 sort 字段分隔符是换行符,即每一行只包含一个字段。

-k 1.8,1.11 表示使用字段 1 中的字符 8 到 11 进行排序。