我有一个日志文件,我希望根据响应时间第四个字段进行排序:
GET /api/user/john 200 0.194 ms - 7307
但它包含颜色标签,这是输出vi
:
^[[0mGET /api/user/john ^[[32m200 ^[[0m0.194 ms - 7307^[[0m
有没有一种简单的方法可以做到这一点?
答案1
- 提取要排序的字段(通常使用
cut
,sed
或awk
),并去掉其格式转义序列。您可以在以下位置找到第二部分的脚本从脚本输出中删除控制字符(包括控制台代码/颜色)。我将使用uncolor
下面的内容来代表这些脚本之一。 - 将所得结果与原结果进行对照(
paste
)。使用数据中未出现的分隔符进行排序。 - 种类。
- 删除排序键。
例如,如果您的字段以制表符分隔:
<input-file.txt cut -f 4 | uncolor |
paste - input-file.txt |
sort |
cut -f 2-