我想用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是v.5.20.2)
a.glo:
\ glossaryentry {AHRF @ {\ memgloterm {AHRF}} {\ memglodesc {Annales historiques delaRévolutionfrançaise}} {\ memgloref {}} | memjustarg} {1}
\ glossaryentry {屁股。 pl é n。@ {\ memgloterm {Ass。 plén。}} {\ memglodesc {Assembléepénière}} {\ memgloref {}} | memjustarg} {1}
\ glossaryentry {章。 r é un。@ {\ memgloterm {Ch。 réun。}} {\ memglodesc {Chambresréunies}} {\ memgloref {}} | memjustarg} {1}
\ glossaryentry {chron。@ {\ memgloterm {chron。}} {\ memglodesc {chronique}} {\ memgloref {}} | memjustarg} {1}
\ glossaryentry {西尔克。 min。@ {\ memgloterm {Circ。 min。}} {\ memglodesc {Circulaireministérielle}} {\ memgloref {}} | memjustarg} {1}
\ glossaryentry {é d。@ {\ memgloterm {éd。}} {\ memglodesc {édition,éditépar}} {\ memgloref {}} | memjustarg} {1}
\ glossaryentry {Int J Semiot Law @ {\ memgloterm {Int J Semiot Law}} {\ memglodesc {International Journal of the Semiotics of Law - Revue internationaledesémiotiqueruurique}} {\ memgloref {}} | memjustarg} { 1}
\ glossaryentry {Oxford J Legal Studies @ {\ memgloterm {Oxford J Legal Studies}} {\ memglodesc {Oxford Journal of Legal Studies}} {\ memgloref {}} | memjustarg} {1}
\ glossaryentry {pr é c。@ {\ memgloterm {préc。}} {\ memglodesc {précité}} {\ memgloref {}} | memjustarg} {1}
\ glossaryentry {启。 adm。@ {\ memgloterm {Rev。 adm。}} {\ memglodesc {Revue administrative}} {\ memgloref {}} | memjustarg} {1}
答案 0 :(得分:2)
我在一个Windows框上试过这个,它有效 我认为该文件必须以正确的编码打开 我将您的文本示例保存为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}]+