カラーデータを含む列を並べ替える方法は?

カラーデータを含む列を並べ替える方法は?

応答時間 4 番目のフィールドに基づいてソートするログファイルがあります。

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

viただし、これにはカラーラベルが含まれています。出力は次のとおりです。

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

これを行う簡単な方法はありますか?

ベストアンサー1

  1. ソートするフィールドを抽出し(通常またはcut使用)、対応する型エスケープシーケンスを削除します。パート2のスクリプトは以下にあります。sedawkスクリプト出力から制御文字(コンソールコード/色付き)を削除するuncolor以下を使用して、これらのスクリプトのいずれかを示します。
  2. 得られた結果を元の結果(paste)と比較します。データに表示されない区切り文字を使用してソートします。
  3. タイプ。
  4. ソートキーを削除します。

たとえば、フィールドがタブで区切られている場合:

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

おすすめ記事