Печать всех столбцов после 5-го с помощью awk

710
Adam

Я использую это, чтобы отфильтровать файл журнала, и я пытаюсь втиснуть на консоль как можно больше важных деталей:

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

Это мой исходный материал:

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 

и это мой вывод awk'd:

 [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 

На этой веб-странице это не так очевидно, но на консоли ясно, что awk добавляет пробелы для разделения столбцов, которые я установил "".

то есть, есть больший разрыв в начале строки и между отметкой времени и информацией.

Могу ли я избавиться от этого с помощью лучшей команды awk?

3

1 ответ на вопрос

2
Nifle

Это можно сделать в awk, но это намного проще

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