私はActivePerlで次のPerlスクリプトを実行して、テキストから時刻とID数値を抽出しています。 何らかの理由により、テキストの最初の行がチェックされた後にwhileループが終了します。whileループが途中で正規表現で終了する
#!/usr/bin/perl -w
$inputfile = "nr_raw.txt";
$outputfile = "results.txt"; #create this output file (it will be created automatically in the current folder)
open (OUTPUTFILEHANDLE, "> $outputfile") || die "I can't find or open $file: error $!\n";
open (INPUTFILEHANDLE, $inputfile) || die "I can't find or open $file!\n";
$_=<INPUTFILEHANDLE>;
while (/{.*?"timestamp":(\d+).*?"accountId":(\d+).*?}\n/sg)
{
$info="timestamp: $1 accountID: $2";
print "$info \n";
print OUTPUTFILEHANDLE $info ;
}
close OUTPUTFILEHANDLE;
nr_raw.txt
:ここ
は、私が使用するPerlのコードではありません(3行目の何accountId
エントリー)
{"eventType":"alarm","timestamp":1508845227478,...,"accountId":1275676,"Version":"1.3",....}
{"eventType":"alarm","timestamp":1508845166740,...,"accountId":1274721,"Version":"1.1",....}
{"eventType":"alarm","timestamp":1508845187479,....,..................,"Version":"1.1",....}
{"eventType":"alarm","timestamp":1508845166980,...,"accountId":1347376,"Version":"1.2",....}
results.txt
:(何もない)
timestamp 1508845227478 account ID1275676
perl 5.0のリリースから23年が経過しています。あなたは 'strict 'と' use warnings'を使用できるようになりました。 – melpomene
あなたのコードはファイルから1行だけを読み込みます。 – melpomene
$ _ =; #ちょうどファイルから最初の行を読む –
asthman