Shell-Script
如何對也有顏色數據的列進行排序?
我有一個日誌文件,我希望根據響應時間進行排序,第 4 個欄位:
GET /api/user/john 200 0.194 ms - 7307
但它包含顏色標籤,這是來自的輸出
vi
:^[[0mGET /api/user/john ^[[32m200 ^[[0m0.194 ms - 7307^[[0m
有沒有一種簡單的方法可以做到這一點?
- 提取要排序的欄位(通常使用
cut
、sed
或awk
),並去掉其格式轉義序列。您可以在從腳本輸出中刪除控製字元(包括控制台程式碼/顏色)中找到第二部分的腳本。我將uncolor
在下面使用代表這些腳本之一。- 將結果與原件 (
paste
) 進行核對。使用未出現在數據中的分隔符進行排序。- 種類。
- 刪除排序鍵。
例如,如果您的欄位是製表符分隔的:
<input-file.txt cut -f 4 | uncolor | paste - input-file.txt | sort | cut -f 2-