我必須解析看起來像dmesg輸出的多個日誌文件。使用Perl從文本文件中提取信息
示例日誌文件:
....
1399424400 4 abcd 2604 starting job (jobid=1325) for client abc.xyz.com, requesting resources now
RESOURCE_GRANTED 1399424400 DiskVolume=/vol;DiskPool=pool1;Path=/mypath;Server=qwer.poil.com;
....
我需要打印輸出文件的作業ID,客戶端,磁盤卷,盤池等,使輸出文件將是這樣的:
1325 abc.xyz.com /vol pool1 /mypath qwer.poil.com
<file2 info>
<file3 info>
.....
我試過這樣做以獲得jobid:
if(@grepres=grep{/jobid/} <TRY>){
@splitres=split(' ',$grepres[0]);
$jobid=$splitres[1];
$jobid =~ s/\D//g;
fh在哪裏?
但它只返回行中的第一個數字,即時間戳。
如何獲取客戶端名稱或服務器名稱?
這是perl approrpiate嗎?
除了當服務器名稱中有一個連字符這個偉大的工程。示例如果它的服務器= qw-er.poil.com,它將只打印qw並忽略其餘部分。我將$ re改爲 $ re = qr {\ b($ re)\ b [\ s =] +([\ w - /] +)} x;現在它可以工作。謝謝! – user983043
@ user983043:是的,我是這樣寫的,因爲在你的例子中沒有連字符。該字符類應該是'[\ w - 。/]',否則'qwer.poil.com'將不能正確匹配 – Borodin