使用mawk替换字符串中出现的字符
大家好,需要这个解决方案使用mawk,请帮助。
我有两个字符串STR_IN & STR_CMPR。想要在STR_IN中替换STR_CMPR的所有字符,主要的事情是,如果STR_IN有两个字符&在STR_CMPR中相同的字符只有一次,那么从STR_IN只有一个字符应该被替换。
有没有人可以帮助使用mawk,没有其他方法请。如果可以使用gsub & regex或match & regex来实现,那就最好了。我不想使用一些循环来遍历每个字符。
下面是3个具有预期输出的示例。
例1:
STR_IN="AABBCCDD"; STR_CMPR="DBAC";
如果使用gsub,则gsub(STR_CMPR, "", STR_IN);结果应为,STR_IN = ABCD;
如果使用匹配,结果: 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;
例3:
STR_IN="DDBBAC"; STR_CMPR="AABCCD";
如果使用gsub,则gsub(STR_CMPR, "", STR_IN);结果应为,STR_IN = DB;
如果使用匹配,结果: STR_IN_MATCH_CNT =4/ 6;
发布于 2019-12-20 18:20:04
这是没有办法的,需要一个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) https://stackoverflow.com/questions/59420734
复制相似问题