Я пытаюсь получить некоторые журналы сбора мусора в 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)? Или есть другой способ сделать это?