1

Я пытаюсь получить некоторые журналы сбора мусора в Splunk. Однако, когда java запускает сборку мусора, он запускает запись в журнале, а затем, когда это делается, вставляет конец записи. Splunk рассматривает их как отдельные записи, поэтому я пытаюсь использовать cron для подачи журналов в отдельный файл, и Splunk отслеживает этот файл.

Я обнаружил, что неполные записи в журнале не имеют символа перевода строки, поэтому я пытался использовать grep, sed или perl one liner для их фильтрации.

Я пробовал это

cat <log file> | egrep "\n"
cat <log file> | sed '/\n/p'
perl -pe '/(?:\n|\r)+$/gm' <log file>

Но каждый раз, когда я получаю обратно неполную строку (вы можете увидеть мой запрос в конце третьей строки):

2013-10-11T13:21:43.952-0500: 56511.609: [GC 56511.609: [ParNew: 2457856K->271659K(2765056K), 0.5481470 secs] 5897437K->3711241K(11981056K), 0.5485080 secs] [Times: user=1.21 sys=0.00, real=0.55 secs]
2013-10-11T13:53:17.001-0500: 58404.658: [GC 58404.658: [ParNew: 2729515K->180830K(2765056K), 0.4755270 secs] 6169097K->3747097K(11981056K), 0.4758900 secs] [Times: user=1.29 sys=0.01, real=0.48 secs]
2013-10-11T14:02:56.084-0500: 58983.741: [Full GC (System) 58983.741: [CMS: 3566266K->3504629K(9216000K), 12.7932340 secs] 4444704K->3504629K(11981056K), [CMS Perm : 2082967K->2081438K(3393452K)], 12.7937180 secs][user@host ~]$

Какой метод следует использовать, чтобы сопоставлять только строки, заканчивающиеся символом перевода строки (\n)? Или есть другой способ сделать это?

1 ответ1

0

Вы можете достичь того, что вы хотите с:

perl -ne 'print if /\n/' <log file>

пример:

[root@ach tmp]# xxd ble
0000000: 610a 620a 630a 64                        a.b.c.d
[root@ach tmp]# perl -ne 'print if /\n/' ble
a
b
c
[root@ach tmp]#

Ваш код perl не работает, потому что -p заставляет perl печатать каждую строку (завершается символом \n или концом файла). Вы делаете некоторые регулярные выражения, но это ни на что не влияет.

perl -pe '/(?:\n|\r)+$/gm' <log file>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .