2016-12-23 1 views
0

Мои файлы журнала находятся в ключевом значении. Я хочу, чтобы найти значение определенного ключа на хвост -f .. Пусть один из строки в журнале является:Как найти значение ключа на хвосте -f

ts=2016-12-23-18-31-34-849 | deviceType=LENOVO Lenovo A6000 | elapsed=11 | firstHomePage=null | installId=37797b61-0bb1-4c1a-844c-5904c7e83de8 | ip=157.48.104.146 
ts=2016-12-23-18-31-34-849 | deviceType=LENOVO Lenovo A6000 | elapsed=15 | firstHomePage=null | installId=37797b61-0bb1-4c1a-844c-5904c7e83de8 | ip=157.48.104.146 

Я не знаю, как я выход трубы из моего хвоста -f, так что выход должен следовать

11 
15 
+0

Является ли это постоянно растущий файл? – Inian

ответ

2

использование GNU grep с командой --line-bufferedstdout в буфер, как она поступает в случае постоянно растущего файла. Флаг -o для сопоставления только рисунка и -P для включения perl стиль regEx захваты.

tail -f file | grep --line-buffered -oP "elapsed=\K(\d+)" 
11 
15 

С man grep страницы

--line-buffered 
     Use line buffering on output. 
2

Попробуйте grep:

tail log_file | grep -o '\<elapsed=[^[:space:]]*' | cut -d= -f2 
+0

Не работал .. ничего не печатал – Deepak

+0

@Deepak Я проверил свою команду с вашим образцом. Но у вас может быть другой Unix или grep, чем у меня. Я обновил свой ответ, заменив '\ S' на альтернативный синтаксис. – xhienne

+0

Спасибо .. результаты приходят через некоторое время и в кусках .. используя -line-buffered вместе с вашей этой командой отлично работает – Deepak

0
awk -F'[=|]' '{print $6}' file 
11 
15 
+0

Я на самом деле думаю, что это лучшее решение, потому что оно является самым кратким +1 –

 Смежные вопросы

  • Нет связанных вопросов^_^