On 19 Jan., 11:39, Peter Makholm <pe...@makholm.net> wrote:
> molsted <mols...@gmail.com> writes:
> > Jeg har et par problemer med et lille script, jeg har behov for at
> > slette liner der indholder følgende:
> > @nr:Match et tal
> > Jeg har prøvet følgende:
> > $line =~ s/^@nr:Match [0-9]//g;
>
> Dit problem er at s/// interpolerer variable. Det vil sige at @nr
> bliver erstattet med indholdet af arrayet @nr. Letteste løsning er at
> escape @'et:
>
> s/^\@nr:Match: \d//g
>
>
>
> > Ligeledes har jeg behov for at tilføje en tabulator samt et ord til
> > slut på linien
> > if ($line =~ m/^\@tur:/) {
> > # Tilføj '\tBox'
> > $line =~ s/\m/tBox\m/
>
> Hvad er det lige at \m skulle betyde?
>
> Og hvis du skal tilføje en tabulator mangler de escape-tegnet før
> t'et.
>
> > }
>
> //Makholm
Hejsa,
jeg er kommet lidt videre nu, men det kniber lidt med dette:
if ($line =~ m/^\@tur:/) {
$line =~ s/\n/Box\n/g ;
$line =~ s/\@tur://g ;
}
Eksempel på data:
@nr:Match 1
@tur:xxxxxxx,
zz, yyyyyyy
@nr:Match 2
@tur:mmmmm, nnnn, uuuuu
@nr:Match 3
@tur:aaa, qqqqq, ppppp
Jeg vil gerne ende ud med dette:
xxxxxxx,
zz, yyyyyyy<tab>Box
mmmmm, nnnn, uuuuu<tab>Box
aaa, qqqqq, ppppp<tab>Box
#!/usr/bin/perl
my $fileName=$ARGV[0];
open(FILE,$fileName) || die("Cannot Open File");
my(@fcont) = <FILE>;
close FILE;
open(FOUT,">$fileName") || die("Cannot Open File");
foreach $line (@fcont) {
# Converting line breaks to UNIX-style
$line =~ s/\r\n?/\n/g ;
if ($line =~ m/^\@tur:/) {
$line =~ s/\n/Box\n/g ;
$line =~ s/\@tur://g ;
}
$line =~ s/\@nr:Match \d\n//g ;
print FOUT $line;
}
close FOUT;
--
Rene