|
本帖最后由 datbik189 于 2019-2-15 15:57 编辑
SED命令涉及到正则,有些符号有特殊意义.
目前通过这样的方式解决这个问题,只是比较繁琐.
ENVI^ ENVIMODE=1
SET &V1=*
SET &V2=★
SET. &V3=*\n*\n*
CALL 任意字符替换 "" 1 1 &V1 &V2 &V3
MESS. %&V3%
_SUB 任意字符替换
//CALL 任意字符替换 "-CASE"(大小写) 0(替换次数) 0(跳过次数) &V1(查找串) &V2(替换串) &V3(原串)
FIND $[%6.=. | ( %~1.<>. & %~1<>-CASE )],EXIT _SUB
TEAM ^SET &P1=%%%~4%%|^SET &P2=%%%~5%%|^SET &P3=%%%~6%%|SET &P4=|SET &P5=|SET &P6=%&P3%|STRL &P7=%&P1%|SET &P8=|SET &P9=0|SET &P10=0|SET &P11=|
LOOP #1=1,
{* ^LPOS* * %~1 *&P8=%%&P1%%,,&P6
FORX * %&P8% 0,&P11,
{* IFEX $%&P11%=0,!!TEAM SET &P8=0|EXIT FORX
MSTR &P5=%&P11%,%&P7%,%&P6%
FIND $%~1=,
{* IFEX '%&P5%'='%&P1%',!!TEAM SET &P8=%&P11%|EXIT FORX
}!
{* IFEX*C '%&P5%'='%&P1%',!!TEAM SET &P8=%&P11%|EXIT FORX
}
}
IFEX $[%&P8%=0 | ( %~2>0 & %&P9%=%~2 )],!!TEAM SET &P4=%&P4%%&P6%|EXIT LOOP
TEAM CALC &P8=%&P8%-1|IFEX $%&P8%=0,SET &P5=!MSTR &P5=1,%&P8%,%&P6%
TEAM CALC &P8=%&P7%+%&P8%+1|MSTR &P6=%&P8%,0,%&P6%
IFEX $[%~3>0 & %&P10%<%~3],TEAM CALC &P10=%&P10%+1|SET &P4=%&P4%%&P5%%&P1%!TEAM CALC &P9=%&P9%+1|SET &P4=%&P4%%&P5%%&P2%
}
TEAM SET-RET %~6=%&P4%|SET &P1=|SET &P2=|SET &P3=|SET &P4=|SET &P5=|SET &P6=|SET &P7=|SET &P8=|SET &P9=|SET &P10=|SET &P11=|
_END |
|