Fråga : Läsning/fixad handstil värderar placerar sparar n-PERL

Hi pröva förmiddag för
I att läsa en spara som har 6 kolon. Datan ska visar på exakt på samecolon placerar upp. Jag försökte att läsa upp på sökanden och att berätta men fann inte en goda explaination.
Johanne1

here är 3 fodrar av matar in file.
743 Hafslund Telekom Nettjene 02011 20090616130000 20100208152959 I
704 morotkommunikationer ASA 02011 20100208153000 99991231000000 I
729 TDC SOM - 729 02090 20080609083000 99991231000000 I

The första få kolon är tomma utrymmen och kan tas out.
There är 6 kolon men att bry sig endast om de första 5 kolonen, dvs. det sist kolonet kan tas tillverkad out.
Desired har 2 krav;
1. avskilj kolonen vid någon sort av delimiterexemplet semi-colon.
2. kolon 5 är en datera, om det startar vid 9999 byter ut därefter med ingenting, om datera inte gör start
with 9999 inte byter ut därefter tillverkad it.

desired:

743; Hafslund Telekom Nettjene; 02011; 20090616130000; 20100208152959;
704; Morotkommunikationer ASA; 02011; 20100208153000; ;
729; TDC SOM -729; 02090; 20080609083000; ;


I skrev en skriva för att dechiffrera between uttrycker och märker och utrymmen, men den gör not
work på grund av kolon 2 som är ett känt, som kan inkludera number.The skrivar nedanfört ger det högra svaret för första 2 fodrar, men fodrar 3 är kluven ouput för incorrectly.

incorrect för fodrar 3:
729; TDC SOM -; 729; 02090; 20080609083000; ;

The understöder 729 är delot som name.
It föresloggs till mig till använt fixat placerar, sedan varje ska datadel verkar alltid in
the samma colon.
Start som räknar från 0.
example: kolon 1 startar i 7th starter för kolon 2 för position
i 12th starter för kolon 3 för position
i 36th starter för kolon 4 för position
i 48th starter för kolon 5 för position
i 67th position.

Is där any långt som jag kan lätt lagra tillfredsställer av varje colonn using kolonet position.

Here är min skrivar baserat på utrymmen, decimaler och uttrycker men ska arbete på grund av
colon 2 innehåller aldrig en titel som har uttrycker, och styrkan har en number.

$infile = ”input.txt”;
$outfile = ”output.txt”;
open (OUTF, ”>$outfile”) || matrisen ”kan inte öppna $outfile”;
open (INF, ”<$infile”) || matrisen ”kan inte öppna $infile”;
{
för
while () $tmp = $_; segrare för
($tmp);
$tmp=~ s/^ \ s+//; @arr för
= splittring (/\ s+/, $tmp);
$temp = "";
för ($i = 0; $i-<= $#arr;
{
, för $i++) om (=~/för $arr [$i] \ d+/) {
, om (($i-eq ($#arr - 1)) && ($arr [$i] =~/^9999/))   {$temp = $temp. ” \; ”;}

annars {$temp = $temp.$arr [$i]. ” \; ”;}
{
för elsif för
för
} (ne-"" för $arr [$i+1]) om (=~/för $arr [$i+1] \ d+/) {$temp = $temp.$arr [$i]. ” \; ”;}annan
{$temp = $temp.$arr [$i].”, ”;}tryck OUTF ”$temp \ n” för
för
för
}};
close (INF) för
};
close (OUTF);

Thanks i förskott för din knepiga del för advice.




the är understödjakolonet som är ett känt, som kan ha märker och numrerar flera and
have words
" klar "

Svar : Läsning/fixad handstil värderar placerar sparar n-PERL

Du kan använda att dela på en jämn röding & att splitsa för att göra trick…, Precis minns, att beståndsdelarna som splitsas från samling tas bort, så skifta din ”pekare” därmed. Test.txt looks gillar denna i mitt fall:
pat1 mönstrar pattern2
dfadafda för pappape xxd1
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
nr.! /bin/perl
nr.
använd strikt;
använd varningar;


öppna IH, ”;
nära IH;

foreach min $line (@dataen) {
 min @spl = splittring (/, $line);
 mitt @col1 = splits@spl, 0.4; #positions 2-9;
 mitt @col2 = splits@spl, 1.7; #positions 2-9;
  
 tryck @col1; 
 tryck”\ n”;
 tryck @col2; 
 tryck”\ n”;
}
Andra lösningar  
 
programming4us programming4us