处理前:
ABC = A1_B1;
ABD = C1_D1;
A1 = D0_A0;
B1 = A1_ABD;
C1 = C0;
D1 = B0_C1;
处理后:
ABC = D0_A0_D0_A0_C0_B0_C0;
ABD = C0_B0_C0;
A1 = D0_A0;
B1 = D0_A0_C0_B0_C0;
C1 = C0;
D1 = B0_C0;
处理要求:
将“值”中所有能替换的“键”都替换为对应的“值”。
-
awk 'NR==FNR{sub(/;/,"");a[$1]=$3;next}{do{l=0;for(i in a)if(!gsub(i,a[i],$3))l++}while(l file file
-
#!/usr/bin/perl
-
use 5.010;
-
my @data = <DATA>;
-
my %hash;
-
/(\S+)\s*=\s*([^;]+)/ and $hash{$1} = $2 for @data;
-
for my $i (0..$#data) {
-
my @line = split /\s+/, $data[$i];
-
my $count = 0;
-
while ( $count < scalar keys %hash ) {
-
$count = 0;
-
$line[2] =~ s/$_/$hash{$_}/g or $count++ for keys %hash;
-
}
-
say join ' ', @line;
-
}
-
__DATA__
-
ABC = A1_B1;
-
ABD = C1_D1;
-
A1 = D0_A0;
-
B1 = A1_ABD;
-
C1 = C0;
-
D1 = B0_C1;
阅读(1762) | 评论(0) | 转发(0) |