我一直拉我的頭髮4天,現在我還沒有這個工作。我必須記錄文件,我是我想提取聲音來自日誌文件的數據並將每個範圍保存到單獨的文件中。我如何從日誌文件中提取響度數據並將每個範圍保存到單獨的文件中。從文件中提取數據,保存每個範圍到一個單獨的文件
#! /usr/bin/perl/
use warnings;
use strict;
my $outdir = "/home/lord-ivan/Soures_Code/Perl/projects/EJ/Queue/";
my $somefile = "/home/lord-ivan/Soures_Code/Perl/projects/Data/EJDATA.LOG";
my $count = 0;
my $spew = 0;
my $out;
open (my $fh, "< $somefile") or die "Could not open file '$somefile' $!";
print "$somefile open\n";
while (<$fh>) {
if (/TRANSACTION STARTED/) {
open($out, '>', "${outdir}TRANSACTION$count.txt") or die $!;
$spew = 1;
$count++;
}
if ($spew) {
print $out $_;
}
if (/TRANSACTION END/) {
close($out);
$spew = 0;
}
}
這是日誌文件看起來像
*TRANSACTION STARTED*
[020t CARD INSERTED
[020tCARD: *************5845
DATE 01-02-16 TIME 05:45:52
05:46:26 GENAC 1 : ARQC
EXTERNAL AUTHENTICATE: NO ARPC
05:46:30 GENAC 2 : AAC
01 FEB 2016 05:47:41 10160021
WITHDRAW
FROM XXXXXXXX ?
INVALID TRANSCATION ON TERMINAL.
-----------------------
[020t 05:47:05 CARD TAKEN
[020t 05:47:07 TRANSACTION END
[0r(1)2[000p[040qe1w3h162[020t*742*02/01/2016*05:47*
*TRANSACTION STARTED*
[020t CARD INSERTED
[020tCARD: *************2584
DATE 01-02-16 TIME 05:47:27
05:48:00 GENAC 1 : ARQC
05:48:05 GENAC 2 : TC
[020t 05:48:16 CARD TAKEN
[020t 05:48:22 NOTES PRESENTED 0,0,2,0
01 FEB 2016 05:48:52 10160021
WITHDRAW
FROM XXXXXXXX ?
AMT GHC40.00
[020t 05:48:31 TRANSACTION END
[0r(1)2[000p[040qe1w3h162[020t*743*02/01/2016*05:57*
所需的輸出應該是這樣的每個.txt文件
*TRANSACTION STARTED*
[020t CARD INSERTED
[020tCARD: *************2584
DATE 01-02-16 TIME 05:47:27
05:48:00 GENAC 1 : ARQC
05:48:05 GENAC 2 : TC
[020t 05:48:16 CARD TAKEN
[020t 05:48:22 NOTES PRESENTED 0,0,2,0
01 FEB 2016 05:48:52 10160021
WITHDRAW
FROM XXXXXXXX ?
AMT GHC40.00
[020t 05:48:31 TRANSACTION END
你忘了提問了。你的代碼是做什麼的? – toolic
這看起來很奇怪。你之前有沒有問過類似的問題? – Sobrique
@Sobrique是的,但沒有得到答案和我正在尋找的解決方案 –