Ordenar por Regex ao rever o ficheiro

0

Eu tenho um arquivo de texto que estou tentando analisar:

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

Estou realmente tentando classificar pelo valor t:0.002 . (Nem todos os valores são 0,002, mas estou tentando classificar este campo numericamente). Agora, em um monte dessas entradas, recebo "t: -" (que estou usando o grep -v para ignorar).

Eu sei que posso usar o tipo, mas é aí que fico preso:

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

Parece que não consigo classificar pelo valor "t:". Tenho certeza de que preciso acrescentar mais algumas coisas ao comando sort, mas não sei ao certo. Alguma sugestão?

    
por ryekayo 07.08.2017 / 22:12

1 resposta

1

Se for mais confiável que seu campo "t" seja sempre o último, você pode usar uma transformação Schwartziana de: decorar, classificar, des-decorar:

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

Aqui, o awk está imprimindo o último campo, despojado de seu texto "t:" inicial; sort então tem um bom valor numérico para classificar, então nós retiramos o primeiro campo.

    
por 07.08.2017 / 22:23

Tags