我有一个包含以下几行的数据文件:
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)
我需要获得第四列的唯一值和最小的值以及对应的第一列。
输出应该是:
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";
}