- 论坛徽章:
- 32
|
awk:- awk 'NR==FNR{sub(/;/,"");a[$1]=$3;next}{do{l=0;for(i in a)if(!gsub(i,a[i],$3))l++}while(l<length(a))print}' file file
复制代码 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[3] =~ 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;
复制代码 |
|