ファイルを表示するときに正規表現で並べ替え

ファイルを表示するときに正規表現で並べ替え

解析したいテキストファイルがあります。

176.9.x.xx - MISS [07/Aug/2017:13:03:59 -0400]  foo.org "GET /foo/bar?page=7 HTTP/1.1" 200 17441 "-" "Mozilla/5.0 (compatible; MegaIndex.ru/2.0; +http://megaindex.com/crawler)" u:192.168.x.x:80 t:0.002

本当に値でソートしたいですt:0.002。 (すべての値は0.002ではありませんが、このフィールドを数値でソートしようとしています。)これで、これらの項目のうち「t:-」が表示されます(私はそれを無視するためにgrep -vを使用します)。

並べ替えが利用可能であることはわかっていますが、ここで詰まっています。

cat test.txt | grep -v "t:-" | sort -n 

"t:" 値でソートできないようです。ソートコマンドに何かを追加する必要があると確信していますが、何がわかりません。どんな提案がありますか?

ベストアンサー1

「t」フィールドが常により信頼できる最後のフィールドである場合は、次のものを使用できます。シュワルツ変換中:装飾、整列、装飾解除:

awk '{print substr($NF, 3), $0}' input | sort -n | cut -d ' ' -f2-

ここで awk は最後のフィールドを印刷し、前の "t:" テキストを削除し、並べ替えるための良い数値を持ち、最初のフィールドを削除します。

おすすめ記事