如何对也有颜色数据的列进行排序?

如何对也有颜色数据的列进行排序?

我有一个日志文件,我希望根据响应时间第四个字段进行排序:

GET /api/user/john 200 0.194 ms - 7307

但它包含颜色标签,这是输出vi

^[[0mGET /api/user/john ^[[32m200 ^[[0m0.194 ms - 7307^[[0m

有没有一种简单的方法可以做到这一点?

答案1

  1. 提取要排序的字段(通常使用cut,sedawk),并去掉其格式转义序列。您可以在以下位置找到第二部分的脚本从脚本输出中删除控制字符(包括控制台代码/颜色)。我将使用uncolor下面的内容来代表这些脚本之一。
  2. 将所得结果与原结果进行对照(paste)。使用数据中未出现的分隔符进行排序。
  3. 种类。
  4. 删除排序键。

例如,如果您的字段以制表符分隔:

<input-file.txt cut -f 4 | uncolor |
paste - input-file.txt |
sort |
cut -f 2-

相关内容