Stampa tutte le colonne dopo la 5a con awk


2

Sto usando questo per filtrare un file di registrazione e sto provando a spremere quanti più dettagli possibili sulla console:

 awk -F " " '{$1=$2=$4=$5=$6=$7=""; print $0}'

Questo è il mio contributo grezzo:

149.177.5.87 - [08/Feb/2017:18:14:20 +0000] 18:14:20:408 18:14:20:435 11140 "GET /2/forecast/KBBL/lastSave HTTP/1.1"  200 43 27 27

e questo è il mio risultato incredibile:

  [09/Feb/2017:11:27:01     "GET /2/data/load/KBBL/2017-01-25/daily?startDate=2017-01-01&endDate=2019-12-31&firstWeekday=0 HTTP/1.1" ?startDate=2017-01-01&endDate=2019-12-31&firstWeekday=0 401 - 1 1

Non è così ovvio in questa pagina Web, ma sulla console è chiaro che awk sta aggiungendo spazi vuoti per separare le colonne che ho impostato "".

vale a dire che c'è un divario maggiore all'inizio della linea e tra il timestamp e le informazioni.

Posso liberarmene con un comando awk migliore?

Risposte:


2

È possibile farlo in awk ma questo è molto più semplice

nifle@xanadu ~/tmp
$ L='149.177.5.87 - [08/Feb/2017:18:14:20 +0000] 18:14:20:408 18:14:20:435 11140 "GET /2/forecast/KBBL/lastSave HTTP/1.1"  200 43 27 27'

nifle@xanadu ~/tmp
$ echo $L |  cut -d ' ' -f 3,8-
[08/Feb/2017:18:14:20 "GET /2/forecast/KBBL/lastSave HTTP/1.1" 200 43 27 27
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.