我想用他们的ASCII等价物来替换文件中的一些对话词。请注意,我不想删除所有的对话:只有那些是前面的第一个"@“字符的每一行。
在以下文件的简化版本(a.glo)中,有四个"é“(粗体)可替换为"e”。我使用的(可能是丑陋的)正则表达式是:
(\\glossaryentry\{(\w|\s|\.)*)(é|è|ê|ë|É|È|Ê|Ë|ē)+它与www.regex101.com/这样的在线测试器和notepad++!
但是,当我输入Windows命令行时,没有任何更改:
perl -pi -i.bak -e "s/(\\glossaryentry\{(\w|\s|\.)*)(é|è|ê|ë|É|È|Ê|Ë|ē)+/$1e/g" a.glo(fwiw,在我的系统中,perl为5.20.2)
a.glo:
术语表{AHRF@{AHRF}}{\memglodesc{ la Révolution aise}}{memgloref{}memjustarg}{1} 词汇表条目{Ass.plén.@plén.}{_ 词汇表条目{Ch.réun.@{_}{\_{_ 术语表条目{chron.@{memgloterm{chron.}{memglodesc{chronique}}{memgloref{}\\memjustarg}{1} 词汇条目{Circ.@@_{_}_\ \glossaryentry{éd.@ {_ 术语表{Int J Semiot @{_{_ 术语表{Oxford J法律研究@{_{_ \glossaryentry{préc.@ {_ 术语表条目{re.adm.@@{\memgloterm{re.adm}}{\memglodesc{Revue管理}}{\memgloref{}\\memjustarg}{1}
发布于 2015-08-09 17:31:44
我在窗户盒上试过这个,很管用。
不过,我认为文件必须以正确的编码打开。
我把你的文本样本保存为ANSI文本。
perl -pi -i.bak -e "s/(\\glossaryentry\{[\w\s.]*)[\x{E9}\x{E8}\x{EA}\x{EB}\x{C9}\x{C8}\x{CA}\x{CB}\x{113}]+/$1e/g" a.glo
# (\\glossaryentry\{[\w\s.]*)[\x{E9}\x{E8}\x{EA}\x{EB}\x{C9}\x{C8}\x{CA}\x{CB}\x{113}]+
( # (1 start)
\\ glossaryentry \{
[\w\s.]*
) # (1 end)
[\x{E9}\x{E8}\x{EA}\x{EB}\x{C9}\x{C8}\x{CA}\x{CB}\x{113}]+ https://stackoverflow.com/questions/31905432
复制相似问题