簡體   English   中英

如何使用Perl將文本文件拆分為塊?

[英]How do I split a text file into blocks using Perl?

我有一個像這樣的數據文件:

A1 2 3 4 5
B 1 2 4
B 7 8 9
A6 7 8 9
B 1 2 3
B 5 6 7
A3 6 9 7
B 2 3 3
B 5 6 6

使用Perl,當解析器命中/^A/時,如何將文件拆分為一組數組(或任何其他數據結構)? 所以我最終

數組1:

A1 2 3 4 5
B 1 2 4
B 7 8 9

數組2:

A6 7 8 9
B 1 2 3
B 5 6 7

等等

非常感謝。

我不得不重寫答案(重寫問題后)

@arrays = ();
while (<>) {
  push(@arrays, []) if /^A/;
  push(@{$arrays[-1]}, $_)
}

在這種情況下,我希望$/可以不僅僅是一個字符串。 但是,有解決方法。

可以使用前瞻性斷言來處理文件並進行處理。 下面的示例僅打印每個以<< >>分隔的字符串,但是不管您想對數據做什么,基本思想都是相同的:

$ perl -0777 -wE 'say "<<$_>>" for split /(?=^A)/m, <>' file.txt
<<A1 2 3 4 5
B 1 2 4
B 7 8 9
>>
<<A6 7 8 9
B 1 2 3
B 5 6 7
>>
<<A3 6 9 7
B 2 3 3
B 5 6 6
>>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM