【发布时间】:2019-11-29 21:29:55
【问题描述】:
好吧,也许是 unicode 等有问题,但代码说明了一切:
$ cat leo
сказывать
ссказываю
сказав
BladeMight@Chandere ~ 23:24:58
$ cat leo | perl -pe 's/^с+каз/Рассказ/g'
Рассказывать
ссказываю
Рассказав
BladeMight@Chandere ~ 23:25:00
$ cat leo | sed -r 's/^с+каз/Рассказ/g'
Рассказывать
Рассказываю
Рассказав
我有文件leo,内容为西里尔文,所以我想用perl -pe 中的正则表达式^с+каз 替换错误的地方,但它只替换只有1 个с(西里尔文之一)的地方,例如+ 在这种情况下什么都不做(对于非西里尔字母,它工作正常),尽管在 sed -r 中它工作得很好。为什么会这样?
【问题讨论】:
-
您还需要避免使用useless
cat。 -
提示:无需涉及
cat。你可以使用perl -pe'...' leo -
@ikegami 我会注意的。