Я думаю, что версия C может работать намного лучше:
#include <stdio.h>
#include <string.h>
#define PAT_LEN 5
int main()
{
/* note this is not a general solution. In particular the pattern
* must not have a repeated sequence at the start, so <unk> is fine
* but aardvark is not, because it starts with "a" repeated, and ababc
* is not because it starts with "ab" repeated. */
char pattern[] = "<unk>"; /* set PAT_LEN to length of this */
char replacement[] = "<raw_unk>";
int c;
int i, j;
for (i = 0; (c = getchar()) != EOF;) {
if (c == pattern[i]) {
i++;
if (i == PAT_LEN) {
printf("%s", replacement);
i = 0;
}
} else {
if (i > 0) {
for (j = 0; j < i; j++) {
putchar(pattern[j]);
}
i = 0;
}
if (c == pattern[0]) {
i = 1;
} else {
putchar(c);
}
}
}
/* TODO: fix up end of file if it ends with a part of pattern */
return 0;
}
РЕДАКТИРОВАТЬ :Изменено в соответствии с предложениями из комментариев. Также исправлена ошибка с шаблоном <<unk>
.
Если вы запустите
wine uninstaller
Wine откроет апплет панели управления «Установка и удаление программ». Выберите приложение, которое хотите удалить, и нажмите кнопку «Удалить».