,我有以下格式的文件非常:Perl腳本來處理文本文件
Status_ArsFlag = ""
Status_NodeAlias = ""
OID1 = ".1.3.6.1.4.1.11.2.17.19.2.2.1"
1 = "NNMi"
2 = "ASB"
3 = "456"
RawCaptureTimeStamp = 1450091580
Status_Identifier = ""
Status_NodeAlias = ""
OID1 = ".1.3.6.1.4.1.11.2.17.19.2.2.1"
1 = "NNMi"
2 = "ASB"
3 = "456"
RawCaptureTimeStamp = 1450091580
Status_Node = ""
Status_NodeAlias = ""
OID1 = ".1.3.6.1.4.1.11.2.17.19.2.2.1"
1 = "NNMi"
2 = "ASB"
3 = "456"
RawCaptureTimeStamp = 1450091580
在哪裏設置的每個數據非常具有「STATUS_」行開始,以「RawCaptureTimeStamp」結束由2個新行分開。
現在的問題是在不理想的情況下,如果文件可以類似於下面:
1 = "NNMi"
2 = "ASB"
3 = "456"
RawCaptureTimeStamp = 1450091580
Status_ArsFlag = ""
Status_NodeAlias = ""
OID1 = ".1.3.6.1.4.1.11.2.17.19.2.2.1"
1 = "NNMi"
2 = "ASB"
3 = "456"
RawCaptureTimeStamp = 1450091580
Status_ArsFlag = ""
Status_NodeAlias = ""
OID1 = ".1.3.6.1.4.1.11.2.17.19.2.2.1"
1 = "NNMi"
所看到的第一和最後一個數據集以上是無效的。我需要一個邏輯,我可以從原始文件中刪除這些不需要的數據集並重新保存。 我在PERL中嘗試了幾件事,但都失敗了。請幫忙。 我正在使用的代碼來讀取文件,並檢查文件是否以狀態開始,如果不讀取,直到達到rawcapturetimestamp。如果它不正確結束
while(my $line = <$cap_1>){
if($. == 1 && $line !~ /^Status/){ #check if first line doesn't begin with status
while($line = <$cap_1>){#if not read till the occurence of RawCaptureTimeStamp
if($line =~/^RawCaptureTimeStamp/){
$. = $.+1;
last;
}
}
$line = <$cap_1>;
if (eof()){ #After reading till raw capture timestamp, check for EOF
last;
}
}
}
因此,空行總是分隔塊?以段落模式讀取文件(例如,設置'$/=「\ n \ n」;'),然後分析每個段落。 –
你說你已經嘗試了幾件事情。代碼在哪裏? –
我爲你寫了一個解決方案,因爲它對我感興趣,並將我帶入了我想要修改的Perl角落。但是,[**馬特·雅各**](http://stackoverflow.com/questions/34270575/perl-script-to-process-a-text-file#comment56285293_34270575)是右Stack Overflow是這裏提供的庫解決常見的問題。當你寧願放棄雙腳而不是做一些工作時,這也不是一個可以去的地方。 – Borodin