我是新來的Perl,我試圖從一個文件,它看起來像這樣提取的具體數據:提取從文本文件中的特定數據在Perl
Print of 9 heaviest strained elements:
Element no Max strain
20004 9.6 %
20013 0.5 %
11189 0.1 %
20207 0.1 %
11157 0.1 %
11183 0.0 %
10665 0.0 %
20182 0.0 %
11160 0.0 %
==================================================
我想只提取單元號(20004 ,20013等)並將它們寫入一個新文件。文件的讀取應該在到達行(=========)時立即結束,因爲文件中稍後會有更多元素編號和相同的標題。 希望是有道理的。 任何建議非常感謝!
我現在有這樣的代碼,這給了我的號碼列表,最大10連勝:
my $StrainOut = "PFP_elem"."_$loadComb"."_"."$i";
open DATAOUT, ">$StrainOut" or die "can't open $StrainOut"; # Open the file for writing.
open my $in, '<', "$POSTout" or die "Unable to open file: $!\n";
my $count = 0;
while(my $line = <$in>) {
last if $line =~/={10}\s*/;
if ($line =~ /% *$/) {
my @columns = split " ", $line;
$count++;
if($count % 10 == 0) {
print DATAOUT "$columns[1]\n";
}
else {
print DATAOUT "$columns[1] ";
}
}
}
close (DATAOUT);
close $in;
什麼需要改變的是「我的@columns =分裂...」行。目前,只要它有'9個空格',就會分割$ line標量。由於元素數字的位數可能會有所不同,這是一種糟糕的數據提取方式。是否可以從左至右進行讀取,省略所有空格並僅記錄數字,直到數字後面有更多空格(百分比值被忽略)?
這似乎工作:我的@columns =拆分(/ \ S + /,$行); – 2012-02-02 16:18:35