Perl
如何使 perl 腳本更智能地解析塊?
我有一個
~/bigfile.txt
包含數千個表單文本塊的文件BLOCK NUMBER : <block> SIZE : <size1> <size2> EXTRA : <extraNumber> <block of text>
對於這個例子說
$ cat ~/bigfile.txt BLOCK NUMBER : 1 SIZE : 7 6 EXTRA : 0 john paul george ringo BLOCK NUMBER : 2 SIZE : 7 3 EXTRA : -10 i am the walrus BLOCK NUMBER : 3 SIZE : 4 3 EXTRA : -1024 hello world
我正在嘗試編寫一個腳本,將每個塊分隔成一個名為 的單獨文件,嵌套到由和索引的
<block>-block.txt
子目錄中。例如,執行腳本應該會導致~/data/``<size1>``<size2>
$ tree ~/data/ ~/data/ |- 4-size1 |- 3-size2 |- 3-block.txt |- 7-size1 |- 3-size2 |- 2-block.txt |- 6-size2 |- 1-block.txt
目前我有一個腳本,它只是將每個塊轉儲到一個單獨的文件中,
~/data/
但我不知道如何改變它。如果有幫助的話,我可以發布我目前的腳本,但我懷疑它效率很低,不適合處理這種組織任務。
我將不勝感激有關如何使用 perl 完成此任務的任何指示。
我會寫:
perl -MFile::Path=make_path -00 -ne ' ($block) = /BLOCK NUMBER : (\d+)/; @sizes = /SIZE : (\d+) (\d+)/; $dir = sprintf "data/%d-size1/%d-size2", @sizes; make_path $dir; if (open $fh, ">", "$dir/$block-block.txt") { print $fh $_; close $fh; } ' bigfile.txt