How to filter (out) certain output in bash

I have a process that tails our AWS CloudWatch logs. It works great, except for the fact that every line is prepended by the CloudWatch group and container ID. For example:

core-api 04a7ce3daf83aa018a92eb4a613c87354695dc8219f213697f7f786b81d4d [PROD] - INFO: GET 200 - 5ms core-api 04a7ce3daf83aa018a92eb4a613c87354695dc8219f213697f7f786b81d4d [PROD] - INFO: POST 200 - 7ms

Есть ли способ передать по конвейеру мою команду журналов, которую я использую с фильтром какого-либо типа, чтобы отображать информацию о строке только после [PROD] - ?

0
задан 4 July 2016 в 00:33
2 ответа

Вы можете попробовать использовать cut , чтобы вырезать интересующие вас столбцы.

tail -f whatever | cut -d ' ' -f 3-

[PROD] - INFO: GET 200 - 5ms
[PROD] - INFO: POST 200 - 7ms

Этот -d устанавливает пробел в качестве разделителя полей , а -f задает отображение только третьего и последующих полей.

Указание полей также может стать более сложным. Предположим, вы действительно хотите избавиться только от этого раздражающего, бесполезного второго поля. Затем вы можете указать -f 1,3- .

core-api [PROD] - INFO: GET 200 - 5ms
core-api [PROD] - INFO: POST 200 - 7ms

См. Справочную страницу cut , чтобы узнать больше о том, что вы можете сделать с помощью этой команды.

4
ответ дан 4 December 2019 в 11:26

Вы можете попробовать использовать awk. Если все строки предварены 4 полями, тогда

 ...| awk '{$1=$2=$3=$4=""; print $0}'

, но вам может потребоваться явная очистка вывода

  ...| awk '{$1=$2=$3=$4=""; print $0; fflush() }'

Это в основном обнуляет первые 4 поля. Обратите внимание, что если вы затем захотите напечатать только определенные поля, первое поле все равно будет стоить 5 долларов, но я думаю, что если вы захотите это сделать, вам не нужно было бы обнулять поля в первую очередь.

Если бы была переменная количество полей, и они всегда оканчиваются на [PROD] - , тогда вы можете использовать sed

...| sed s '/^.* \[PROD\] -//'

, который в основном заменяет все от начала строки до - на ноль // .

1
ответ дан 4 December 2019 в 11:26

Теги

Похожие вопросы