仅使用mawk替换2个字符串之间出现的字符

仅使用mawk替换2个字符串之间出现的字符,awk,pattern-matching,gsub,Awk,Pattern Matching,Gsub,使用mawk替换字符串中字符的出现 大家好,需要使用mawk的解决方案,请帮助 我有两个字符串STR_IN&STR_CMPR。 要在中的STR_中重新拼贴STR_CMPR的所有字符吗 最重要的是,如果STR\u IN有两个字符&在STR\u CMPR中,相同的字符只有一个,那么STR\u IN只有一个字符应该是replice 有没有人能帮你只用mawk,没有其他方法。 如果可以使用gsub®ex或match®ex实现,那么它是最好的。我不想使用一些循环遍历每个角色 下面是具有预期输出

使用mawk替换字符串中字符的出现

大家好,需要使用mawk的解决方案,请帮助

我有两个字符串STR_IN&STR_CMPR。 要在中的STR_中重新拼贴STR_CMPR的所有字符吗 最重要的是,如果STR\u IN有两个字符&在STR\u CMPR中,相同的字符只有一个,那么STR\u IN只有一个字符应该是replice

有没有人能帮你只用mawk,没有其他方法。 如果可以使用gsub®ex或match®ex实现,那么它是最好的。我不想使用一些循环遍历每个角色

下面是具有预期输出的3个示例

例1:
STR_IN=“AABBCCDD”
STR_CMPR=“DBAC”

如果使用gsub;
gsub(STR_CMPR,”,STR_IN)
结果应该是,STR_IN=ABCD

如果使用match, 结果:STR_IN_MATCH_CNT=4/8

例2:
STR_IN=“DBAC”
STR_CMPR=“AABBCCDD”

如果使用gsub;
gsub(STR_CMPR,”,STR_IN)
结果应为,STR_IN=空白

如果使用匹配; 结果:STR_IN_MATCH_CNT=4/4

例3:
STR_IN=“DDBBAC”
STR_CMPR=“AABCCD”

如果使用gsub,
gsub(STR_CMPR,”,STR_IN)
结果应为,STR_IN=DB

如果使用match,
结果:STR_IN_MATCH_CNT=4/6

没有出路,需要一个for循环,最快的是:

STR_IN_MATCH_CNT=length(STR_IN)
for(i=1;i<=length(STR_CMPR);++i) sub(substr(STR_CMPR,i,1),"",STR_IN)
STR_IN_MATCH_CNT-=length(STR_IN) 
STR\u IN\u MATCH\u CNT=长度(STR\u IN)

对于(i=1;我能不能请您将代码/样本包装在代码标签中,然后告诉我们。完成更改后,希望现在可以。如果inSTR\u CMPR中有任何字符两次,那么我们需要进行两次替换,或者只进行一次替换?请您确认一次。模仿两次。STR\u CMPR=AABC&STR\u in=baac Result STR\u in=A