次の行を含むデータファイルがあります。
gtssmpar11/dmunit1/mt_dm_fifo_csr_flopped_out/u_gt_ram/wrdataR_reg_0_b171_b174_b236_b242_qreg/d2 19.33 18.65 -0.67 (VIOLATED)
gtssmpar11/dmunit1/mt_dm_fifo_csr_flopped_out/u_gt_ram/wrdataR_reg_0_b186_b196_b210_b223_qreg/d2 15.09 11.70 -3.39 (VIOLATED)
gtssmpar21/flunit1/flunitx1/fl_flex1/fl_mt_input_fifo/u_gt_ram/wrdataR_dreg_b103_b104/d2 40.35 36.61 -3.74 (VIOLATED)
gtssmpar21/flunit1/flunitx1/fl_flex1/fl_mt_input_fifo/u_gt_ram/wrdataR_dreg_b105_b106/d1 11.06 8.77 -2.29 (VIOLATED)
gtssmpar21/flunit1/flunitx1/fl_flex1/fl_mt_input_fifo/u_gt_ram/wrdataR_dreg_b105_b106/d1 40.08 29.18 -10.90 (VIOLATED)
gtssmpar21/flunit1/flunitx1/fl_flex1/fl_mt_input_fifo/u_gt_ram/wrdataR_dreg_b119_b120/d2 11.37 8.34 -3.03 (VIOLATED)
gtssmpar21/flunit1/flunitx1/fl_flex1/fl_mt_input_fifo/u_gt_ram/wrdataR_dreg_b11_b12/d2 14.56 4.41 -10.15 (VIOLATED)
gtssmpar21/flunit1/flunitx1/fl_flex1/fl_mt_input_fifo/u_gt_ram/wrdataR_dreg_b11_b12/d2 45.82 27.47 -18.34 (VIOLATED)
そして、対応する1列目で4列目の一意の値と最小値を取得する必要があります。
出力は次のようになります。
gtssmpar11/dmunit1/mt_dm_fifo_csr_flopped_out/u_gt_ram/wrdataR_reg_0_b171_b174_b236_b242_qreg/d2 19.33 18.65 -0.67 (VIOLATED)
gtssmpar11/dmunit1/mt_dm_fifo_csr_flopped_out/u_gt_ram/wrdataR_reg_0_b186_b196_b210_b223_qreg/d2 15.09 11.70 -3.39 (VIOLATED)
gtssmpar21/flunit1/flunitx1/fl_flex1/fl_mt_input_fifo/u_gt_ram/wrdataR_dreg_b103_b104/d2 40.35 36.61 -3.74 (VIOLATED)
gtssmpar21/flunit1/flunitx1/fl_flex1/fl_mt_input_fifo/u_gt_ram/wrdataR_dreg_b105_b106/d1 40.08 29.18 -10.90 (VIOLATED)
gtssmpar21/flunit1/flunitx1/fl_flex1/fl_mt_input_fifo/u_gt_ram/wrdataR_dreg_b119_b120/d2 11.37 8.34 -3.03 (VIOLATED)
gtssmpar21/flunit1/flunitx1/fl_flex1/fl_mt_input_fifo/u_gt_ram/wrdataR_dreg_b11_b12/d2 45.82 27.47 -18.34 (VIOLATED)
パターン マッチングを使用して、列 1 と列 4 をハッシュで取得し、ハッシュを並べ替えてみました。しかし、それは私が望むようには機能しません。助けてください。
while(<FILE1>) {
my $path = $_;
$path =~ /([^\s]+)/;
$path = $1; #Extracting path
chop($path);
my $slack = $_;
#$slack =~ /([^\s+]+)[\d+][\s+][\d+][\s+]([^\f+]+)[\s](VIOLATED)/;
$slack =~ /[^\f+][\s+][\f+][\s+][\f+][\s+]([\f+]+)[\s](VIOLATED)/;
$slack = $1;
print "$slack\n";
chop($slack);
print FILE2 "$slack\n";
}