Tabelle erst ab bestimmter Spalte anzeigen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von LarsB, 20.02.2013.

  1. LarsB

    LarsB Grünschnabel

    Dabei seit:
    20.02.2013
    Beiträge:
    4
    Zustimmungen:
    0
    Hallo,

    ich habe eine Datei, in der eine Tabelle enthalten ist. Die einzelnen Spalten sind durch Leerzeichen getrennt. Per grep habe ich schon die gesuchte Zeile gefunden, soweit so gut.

    Eine Zeile ist so aufgebaut, dass erst ein Datum, dann eine Komponente gefolgt von mehreren Werten vorkommt. Anschließend kommt wieder eine Komponente gefolgt von mehreren Werten (Anzahl der Werte nicht immer identisch). Diese Zeile ist mehrere hundert Spalten lang.

    Ich muss nun auf einen bestimmten Wert zugreifen, weiß aber nicht, an welcher absoluten Stelle sich dieser befindet, ich kenne nur die relative Position zum Komponentenname.

    Meine Idee war es nun, die ersten Spalten der Zeile nicht anzuzeigen, sodass der Komponentenname in Spalte 1 steht.
    Nur hier weiß ich nicht weiter.

    Wer mir hier weiterhelfen könnte, würde mir den Tag retten :)

    Als kleines Extra:
    Der Komponentenname ist beispielsweise "Komponente1". In der Spalte wo er sich befindet, steht jedoch oft auch "0123Komponente1".
    Trotzdem sollte der Eintrag sich anschließend in Spalte 1 befinden.

    Vielen Dank für eure Hilfe! :)
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 tgruene, 20.02.2013
    tgruene

    tgruene Routinier

    Dabei seit:
    02.02.2012
    Beiträge:
    418
    Zustimmungen:
    0
    Mit awk kannst Du innerhalb einer Zeile auf die einzelnen Felder bequem zugreifen.
    Code:
     grep Komponente1 Datei.text | awk '{print $2, $42}'
    Ich verstehe an Deiner Beschreibung nicht, was Du mit relativ und absolut meinst. Du sagst, dass erst das Datum und dann die Komponente folgt. Demnach ist Komponente an Position 2 (absolut). Wenn Du nun die Position der gesuchten Spalte relative zu Komponente kennst, kennst Du doch auch die absolute Spalte.
     
  4. #3 tgruene, 20.02.2013
    tgruene

    tgruene Routinier

    Dabei seit:
    02.02.2012
    Beiträge:
    418
    Zustimmungen:
    0
    Mit awk kannst Du innerhalb einer Zeile auf die einzelnen Felder bequem zugreifen.
    Code:
     grep Komponente1 Datei.text | awk '{print $2, $42}'
    Ich verstehe an Deiner Beschreibung nicht, was Du mit relativ und absolut meinst. Du sagst, dass erst das Datum und dann die Komponente folgt. Demnach ist Komponente an Position 2 (absolut). Wenn Du nun die Position der gesuchten Spalte relative zu Komponente kennst, kennst Du doch auch die absolute Spalte.
     
  5. LarsB

    LarsB Grünschnabel

    Dabei seit:
    20.02.2013
    Beiträge:
    4
    Zustimmungen:
    0
    Ich meinte damit, dass die Komponente zum Beispiel an 2. Stelle steht, dann bräuchte ich den 3. Wert. Die nächste Komponente steht aber an 15. Stelle, möchte ich den Wert von ihr bräuchte ich also den 16. Wert.

    Ist das so verständlicher?
     
  6. LarsB

    LarsB Grünschnabel

    Dabei seit:
    20.02.2013
    Beiträge:
    4
    Zustimmungen:
    0
    Aber Danke, deine Antwort hat mich auf eine Idee gebracht, mit dem awk ein bisschen zu probieren.
    Diese Lösung erfüllt meinen Wunsch:


    Code:
    cat $Datei | grep $1 | tr -s " " | awk '{for (i=1;i<20;i++){zahl += 2; if ( $(zahl) == "Komponente1" ) {print $(zahl+1)}}}' 
    Jetzt müsste nur noch in der if-Abfrage gelöst werden, dass nicht genau nach Komponente1 gesucht wird sondern so etwas wie

    Code:
    if ( $(zahl) == "*Komponente1*" )
    Gibt es hier zum Beispiel so etwas wie LIKE in SQL?
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. Arch

    Arch Foren As

    Dabei seit:
    21.10.2011
    Beiträge:
    81
    Zustimmungen:
    0
    Ja kannst du, ohne die Anführungszeichen:
    Code:
    if ( $(zahl) == *Komponente1* )
     
  9. LarsB

    LarsB Grünschnabel

    Dabei seit:
    20.02.2013
    Beiträge:
    4
    Zustimmungen:
    0
    Vielen Dank!

    Mittlerweile bin ich auf auf diese Lösung gestoßen:

    Code:
    if ( $(zahl) ~ TTT )
    Scheinbar stoße ich nach dem Schreiben einer Frage ziemlich schnell selbst auf die passende Antwort :D

    Vielen Dank noch einmal :)
     
Thema: Tabelle erst ab bestimmter Spalte anzeigen
Besucher kamen mit folgenden Suchen
  1. grep linux tabelle

Die Seite wird geladen...

Tabelle erst ab bestimmter Spalte anzeigen - Ähnliche Themen

  1. Erstellung von Terminverwaltung-Tabelle(n)

    Erstellung von Terminverwaltung-Tabelle(n): Moin @ll, ich bräuchte etwas Hilfe/Anregung bei einem privaten Projekt. Es geht darum, dass eine Terminverwaltung aufgestellt werden soll....
  2. Partitions tabelle wieder herstellen.

    Partitions tabelle wieder herstellen.: Das war der Fehler: FATAL ERROR: Bad logical partition 6: enlarged logical partitions overlap Press any key to...
  3. paritionstabelle wiederherstellen?

    paritionstabelle wiederherstellen?: Hallo, ich verwende Debian und habe auch mal Windows xp benutzt (auch parallel), aber es ist ordentlich kapputgegangen, ich wollte es neu...
  4. Raid mit MSDOS Partitionstabelle erstellt, nachträgliche Migration möglich?

    Raid mit MSDOS Partitionstabelle erstellt, nachträgliche Migration möglich?: Moin Leute, folgendes Problem: Ich hatte einen Raid aus 8x 250GB Platten im Software-Raid, deren Daten ich auf meinen neuen Hardware Raid...
  5. Mit MCC erstellte Partitionstabelle wiederherstellen

    Mit MCC erstellte Partitionstabelle wiederherstellen: Hi! Man kann ja in diesem MandrakeControlCenter (MCC) auch unter "Einhängepunkte" unter anderem seine Festplatten verwalten und von einer...