Vraag : Het lezen/de het schrijven Vaste dossiers n PERL van de Positie van de Waarde

Hallo,
I am die een dossier proberen te lezen dat 6 dubbelpunten heeft. De gegevens zullen bij precies bij de same
colon posities verschijnen. Ik probeerde te bestuderen zoek en vertel maar niet vond een goede explaination.
Johanne1

here 3 lijnen van input file.
743 Hafslund TELEKOM Nettjene 02011 20090616130000 20100208152959 I
704 Mededelingen ASA 02011 van de Wortel 20100208153000 99991231000000 I
729 TDC ZOALS is - 729 02090 20080609083000 99991231000000 I

The de eerste dubbelpunten lege ruimten zijn en genomen out.
There kunnen zijn zijn 6 dubbelpunten maar slechts geven om de eerste 5 dubbelpunten, d.w.z. kan de laatste dubbelpunt genomen output out.
Desired zijn heeft 2 vereisten;
1. scheid de dubbelpunten door één of ander soort afbakeningsvoorbeeld semi-colon.
2. dubbelpunt 5 is een datum als het door 9999 dan vervangt met niets begint als de datum niet start
with 9999 dan vervangt geen output it.

desired:

743; Hafslund TELEKOM Nettjene; 02011; 20090616130000; 20100208152959;
704; De Mededelingen ASA van de wortel; 02011; 20100208153000; ;
729; TDC ALS -729; 02090; 20080609083000; ;


I schreef een manuscript tussen woorden en brieven en ruimten te ontcijferen maar het not
work wegens dubbelpunt 2 die een naam is die het manuscript number.
The kan omvatten hieronder geeft juist antwoord voor eerste 2 lijnen maar lijn 3 is verdeelde incorrectly.

incorrect ouput voor lijn 3:
729; TDC ZOALS -; 729; 02090; 20080609083000; ;

The tweede 729 is deel ot name.

It aan me in gebruikte vaste positie werd voorgesteld aangezien elk gegevensdeel altijd in
the zelfde colon.
Start tellend van 0.
example zal lijken: dubbelpunt 1 begin in 7de position
dubbelpunt 2 begin in 12de position
dubbelpunt 3 begin in 36ste position
dubbelpunt 4 begin in 48ste position
dubbelpunt 5 begin in 67ste position.

Is daar om het even welke manier ik de inhoud van elke colonn kan gemakkelijk opslaan gebruikend de dubbelpunt position.

Here ben mijn die manuscript op ruimten, decimalen en woorden wordt gebaseerd maar nooit zal werken wegens
colon 2 bevat een titel die heeft woorden en een number.

$infile = „input.txt“;
$outfile = „output.txt“;
open (OUTF, „>$outfile“) || de matrijs „kan geen $outfile“ openen;
open (INF, „<$infile“) || de matrijs „kan geen $infile“ openen;
while ()
{
$tmp = $_;
chomp ($tmp);
        $tmp=~ s/^\s+//;
@arr = verdeelde (/\ s+/, $tmp);
$temp = "";
voor ($i = 0; $i <= $#arr; $i++)
{
als ($arr [$i] =~/\ d+/) {
als (($i eq ($#arr - 1)) && ($arr [$i] =~/^9999/))   {$temp = $temp. “ \; „;}

anders {$temp = $temp.$arr [$i]. “ \; „;}
}
elsif ($arr [$i+1] Ne "")
{
als ($arr [$i+1] =~/\ d+/) {$temp = $temp.$arr [$i]. “ \; „;}anders
{$temp = $temp.$arr [$i].“ „;}
}
}
druk OUTF „$temp \ n“;
}
close (INF);
close (OUTF);

Thanks vooraf voor uw netelig deel advice.




the is de tweede dubbelpunt die een naam is die letters en getallen and
have kan hebben verscheidene words

Antwoord : Het lezen/de het schrijven Vaste dossiers n PERL van de Positie van de Waarde

U kunt het verdelen op een klusjesniveau & het verbinden gebruiken om de truc te doen… Herinner enkel dat de elementen van serie worden verbonden dienovereenkomstig verplaatsen zo uw „wijzer die“ worden verwijderd. Test.txt kijkt als dit in mijn geval:
pat1 patroon pattern2
xxd1 pappape dfadafda
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
#! /bin/perl
#
strikt gebruik;
gebruiks waarschuwingen;


open IH, „;
dichte IH;

foreach mijn $line (@data) {
 mijn @spl = verdeel (/, $line);
 mijn @col1 = verbind @spl, 0.4; #positions 2-9;
 mijn @col2 = verbind @spl, 1.7; #positions 2-9;
  
 druk @col1; 
 druk „\ n“;
 druk @col2; 
 druk „\ n“;
}
Andere oplossingen  
 
programming4us programming4us