Shell-Script

如何對也有顏色數據的列進行排序?

  • May 26, 2020

我有一個日誌文件,我希望根據響應時間進行排序,第 4 個欄位:

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

但它包含顏色標籤,這是來自的輸出vi

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

有沒有一種簡單的方法可以做到這一點?

  1. 提取要排序的欄位(通常使用cutsedawk),並去掉其格式轉義序列。您可以在從腳本輸出中刪除控製字元(包括控制台程式碼/顏色)中找到第二部分的腳本。我將uncolor在下面使用代表這些腳本之一。
  2. 將結果與原件 ( paste) 進行核對。使用未出現在數據中的分隔符進行排序。
  3. 種類。
  4. 刪除排序鍵。

例如,如果您的欄位是製表符分隔的:

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

引用自:https://unix.stackexchange.com/questions/589061