我有一个包含多个列的文件,其中一些名称是部分重复的,如下所示:
[]$head -n1 file.csv
AGE_030 AGE_031 AGE_032 AMET_022 ... MEND_009 MOLI_032 ... OIA_013 SH-1 SH-10 SH-107
SH-108 SH-4 SH-1_new SH-4_new AREN_1 AREN_28 AREN_3 AREN_4 AGE_032_new AMET_022_new
MEND_009_new MOLI_032_new OIA_013_new... 所有带有_new后缀的列名都有另一个匹配项。
我想用这种方式替换两个mathes的后缀,用于所有部分复制:
我想要这样做,让我可以编辑文件中的列名,就像perl -i一样。
有什么想法吗?
发布于 2019-12-18 12:35:36
perl -pale'
next if $. != 1;
my %map = map { /^(.*)_new\z/s ? ( $1 => "$1_old", $_ => $1 ) : () } @F;
@F = map { $map{$_} // $_ } @F;
$_ = "@F";
'如果行为AGE_030 AGE_030_new AGE_031,则@F将包含"AGE_030", "AGE_030_new", "AGE_031"。由此创建了以下映射:"AGE_030" => "AGE_030_old", "AGE_030_new" => "AGE_030"。最后,我们应用映射和重建线。
https://stackoverflow.com/questions/59392083
复制相似问题