/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Regular expression til søg og erstat
Fra : Michael Jenner


Dato : 13-04-03 15:30

Hej,

Nogle der kan hjælpe med et søg og erstat script som bruger regulære
expressions?

streng1: textstreng

skal erstattes med

streng1: textstreng
streng2: textstreng

På forhånd tak

Michael


 
 
Michael Jenner (13-04-2003)
Kommentar
Fra : Michael Jenner


Dato : 13-04-03 21:40

Nedenstående Perl script klarede det.

Tak for "hjælpen"

Mvh Michael


#!/usr/bin/perl

$inputfile = "test.txt";
$outputfile = "test2.txt";
$str1 = "str1: ";
$str2 = "str2: ";

open INP, '<', $inputfile or die "Cannot open: $inputfile\n";
open OUTP, '>', $outputfile or die "Output file ($outputfile) already
exists\n";

my $line;
my $newline;

while($line = <INP>) {
$_ = $line;
print OUTP $line;
if ( $_ =~ /^$str1*/ ) {
    s/$str1/$str2/;
    print OUTP $_;
   }
}
close(OUTP);
close(INP);


Michael Jenner wrote:
> Hej,
>
> Nogle der kan hjælpe med et søg og erstat script som bruger regulære
> expressions?
>
> streng1: textstreng
>
> skal erstattes med
>
> streng1: textstreng
> streng2: textstreng
>
> På forhånd tak
>
> Michael
>


Lars Kongshøj (13-04-2003)
Kommentar
Fra : Lars Kongshøj


Dato : 13-04-03 23:31

Michael Jenner wrote:
> > Nogle der kan hjælpe med et søg og erstat script som bruger regulære
> > expressions?
> >
> > streng1: textstreng
> >
> > skal erstattes med
> >
> > streng1: textstreng
> > streng2: textstreng

sed 's/^streng1/streng2/' indfil > udfil

Skulle kunne gøre det. Det har nu ikke så meget med regulære udtryk at
gøre. Men jeg tror at grunden til at du ikke fik så megen "hjælp", var
at det var lidt svært at forstå, præcis hvad du ville. Jeg var i hvert
fald i tvivl.

--
Lars Kongshøj
http://www.kongshoj.com/

Peter Makholm (14-04-2003)
Kommentar
Fra : Peter Makholm


Dato : 14-04-03 07:39

Lars Kongshøj <lars_kongshoj@hotmail.com> writes:

> sed 's/^streng1/streng2/' indfil > udfil

Det gør ikke det samme som perlscriptet i det indlæg du svare på.

perl -ple 's/^streng1:(.*)/streng1:$1\nstreng2:$1/' fil1 > fil2

Jeg plejer at have småproblemer med at få noget til at virke med sed
og man kan heller ikke forvente at sed kan lave
inline-redigering. derfor foretrækker jeg (også) perl til det problem.

--
Peter Makholm | I laugh in the face of danger. Then I hide until
peter@makholm.net | it goes away
http://hacking.dk | -- Xander

Lars Kongshøj (14-04-2003)
Kommentar
Fra : Lars Kongshøj


Dato : 14-04-03 21:12

Peter Makholm wrote:
> Lars Kongshøj <lars_kongshoj@hotmail.com> writes:
> > sed 's/^streng1/streng2/' indfil > udfil
> Det gør ikke det samme som perlscriptet i det indlæg du svare på.
> perl -ple 's/^streng1:(.*)/streng1:$1\nstreng2:$1/' fil1 > fil2

Nej, så fik jeg vist alligevel misforstået opgaven. Så i stedet for sed
skal man mindste have fat på storebror awk.

> Jeg plejer at have småproblemer med at få noget til at virke med sed
> og man kan heller ikke forvente at sed kan lave
> inline-redigering. derfor foretrækker jeg (også) perl til det problem.

En ubegribelig mangel ved sed. Den findes dog i super-sed, som vist
senere skal overtage rollen som gnu sed.

--
Lars Kongshøj
http://www.kongshoj.com/

Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408941
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste