2009-07-06 6 views
-2

Ich versuche, alle £ Symbole in einer HTML-Datei mit £ zu ersetzen. Mein regulärer Ausdruck scheint nicht zu funktionieren.Wie kann ich alle £ in einer Datei mit £ durch Perl ersetzen?

Könnten Sie bitte helfen?

+1

Zeigen Sie, was Sie versucht haben, die nicht so können die Menschen nicht funktioniert sehen, was schief gelaufen ist und Ihnen helfen? – ysth

+0

Sie fragen "Was ist das Problem" in den Kommentaren, aber niemand kann es Ihnen sagen, da Sie nicht gesagt haben, was Sie getan haben. Versuchst du das in Vim? Wenn das so ist, wie_? Versuchen Sie dies mit Perl zu tun? Wenn das so ist, wie_? – Telemachus

+0

Sorry sein Mitake, davor füge ich andere Kommentare ein und lösche es. Das Problem ist nun gelöst – joe

Antwort

2

Dies sollte funktionieren,

seit £ als 0xA3 auf meinem Hexdump angezeigt.

Aber, so wird

#!/usr/bin/perl 
while (<>) { 
    s/£/pound/g; 
     print; 
} 

Sagen Sie einfach

chmod a+x convert.pl 
convert.pl yourfile.html > newfile.html 
4

Sie am meisten haben wahrscheinlich vergessen zu:

use utf8; 

das folgende Programm Versuchen:

#!/usr/bin/perl 

use strict; 
use warnings; 
use utf8; 

while (<DATA>) { 
    s/£/&pound;/g; 
    print 
} 

__END__ 
This is sample text with lots of £££! 
50£ is better than 0£. 

Wenn Sie aus einer Datei input Namen lesen möchten und output in eine Datei schreiben genannt:

#!/usr/bin/perl 

use strict; 
use warnings; 
use utf8; 

open my $input, '<', 'input' or die $!; 
open my $output, '>', 'output' or die $!; 

binmode $input, ':utf8'; 

while (<$input>) { 
    s/£/&pound;/g; 
    print $output $_; 
} 
+1

Warum '& Pfund;' und nicht nur £ in der Substitution? Wenn Sie & verwenden, wird es als £ anstelle von £ im Browser angezeigt. –

+0

@Lars Haugseth: Die Frage wurde später bearbeitet, um '& Pfund; 'zu' £ 'zu ändern. Ich habe es so bearbeitet. Danke für die Information. :-) –

+0

@Krish: Entschuldigung, ich habe nicht verstanden, was Sie versuchen zu tun. Bitte erkläre. –

0
perl -i.bak -ne 's/£/&pound/g; print $_' file 
+0

Sie sollten das Flag -p anstelle von -n verwenden, wenn Sie nur am Ende drucken. 'perl -i.bak-pe 's/£/& Pfund/g' Datei ' –

Verwandte Themen