mete-eve
Goto Top

Zeile 100 an Zeile 1 anfügen,...

Hallo Leute,
ich bin gerade in der Abteilung Netzwerk in meiner Ausbildung.
Ich komme leider gerade beim Programmieren in Perl nicht weiter.

Ich habe den Befehl esxtop (ESX Server) in eine Datei geschrieben.
Das blöde an dieser Sache ist nur:
Mein Dokument hat 3575 Zeilen.
Die hälfte davon ist die Bezeichnung die andere die Werte dazu.

Network Port
Memory
.
.
.
(leerzeile)
"0.25"
"100"
.
.
.

Ich habe die Zeilennummern.
Nun möchte ich die Zeile 1789 an Zeile 1 anfügen (Network Port = "0.25")
und dann 1790 an Zeile 2, usw.

Die Daten stehen in $output.

Kann mir jemand einen Tipp geben.
Bin über jede hilfe dankbar.

Content-Key: 99435

Url: https://administrator.de/contentid/99435

Printed on: April 19, 2024 at 05:04 o'clock

Member: mete-eve
mete-eve Oct 16, 2008 at 09:43:14 (UTC)
Goto Top
Ich habe jetz es so versucht:

while (<in>)
{
if ($. eq $anzahl_wert)
{
  1. schreibe Wert nach Bezeichung

#while (<in>)
#{
  1. if ($. eq $anzahl_bez)
  2. {
  3. print $_;
  4. }
#}
print $_;
last;
}
}
Mein Problem ist jetzt, ich habe den Wert zwar muss ihn aber noch Bezeichnung schreiben.
Das mit der while-Schleife in der Schleife funktioniert nicht.

Hat jemand eine Idee?
Member: dog
dog Oct 16, 2008 at 14:24:46 (UTC)
Goto Top
Hallo,

ich kann dir nur die Lösung für Arme-Leute-Perl (PHP) sagen (ungetestet):
<?php

	$fileArray = file('---'); //Liest jede Zeile in ein Array  
	
	foreach ($fileArray as $lineNum => $line) {
		if(trim($line) == '') {  
			$splitterLine = $lineNum;
			break;
		}
	}
	
	$keys = array_slice($fileArray,0,$splitterLine-1); //Ein Array nur mit den Keys
	$values = array_slice($fileArray,$splitterLine+1); //Ein Array mit den Werten
	
	$data = array();
	for ($i=0; $i < count($keys); $i++) { 
		$data[trim($keys[$i])] = trim($values[$i]);
	}

?>
Vielleicht bringt dich das ja auf eine Idee
Member: mete-eve
mete-eve Oct 21, 2008 at 09:27:19 (UTC)
Goto Top
Meine Lösung:

foreach (@Lines)
{
          1. Bezeichung 1-1787
          if ($zahl eq $Zeile_bez && $zahl < $Zeile_max_bez)
          {
          push(@bez, $_);

          $Zeile_bez++;
          }

                  1. Wert 1789-3575
                  if ($zahl eq $Zeile_wert && $zahl < $anzahl)
                  {

                  $bez[$zeile] =~ s/\n//g;
                  print ESXTOP $bez[$zeile];
                  print ESXTOP " = ";
                  print ESXTOP $_;

                  close(ESXTOP);

                  $zeile++;
                  $Zeile_wert++;
                  }
                  $zahl++;
                  }