in sed mit einer Variable suchen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von ramann, 14.12.2007.

  1. ramann

    ramann Eroberer

    Dabei seit:
    20.06.2007
    Beiträge:
    59
    Zustimmungen:
    0
    hi zusammen

    ich möchte (SuSE & bash) eine bestimmte Zeilennummer ausgeben welche vorher nicht bekannt ist.

    Mein Ansatz ist/war sed, dachte ich kann damit die Zeilennummer per variable übergeben

    sed -n '$VARp' datei

    geht aber nicht :-(

    Jemand eine Idee?


    Thanks
    bjoern
     
  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 bytepool, 14.12.2007
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    hi,

    Eh, hae? Ich fuerchte ich verstehe die Frage nicht wirklich, was genau willst du tun? Wenn du die Zeilen nr. schon in $VAR stehen hast reicht doch schon ein 'echo $VAR'? Aber ich denke ich habe dich da missverstanden, versuch doch nochmal zu erklaeren was du willst ;)

    mfg,
    bytepool
     
  4. ramann

    ramann Eroberer

    Dabei seit:
    20.06.2007
    Beiträge:
    59
    Zustimmungen:
    0
    jo, habe mich falsch ausgedrückt. Haben tue ich die Zeilennummer in einer Variablen und möchte die entsprechende Zeile aus der Datei haben :-)
     
  5. #4 bytepool, 14.12.2007
    Zuletzt bearbeitet: 14.12.2007
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Achso, dann geht das doch recht simpel mit grep:
    Code:
    nr=5;grep -n "" bla.txt | grep "^$nr:"
    
    Das sollte eigentlich schon funktionieren...

    edit:
    Das ist dann aber wahrscheinlich nicht unbedingt portabel, weil das von der installierten grep Version abhaengt. Ich weiss nicht ob alle Versionen von grep die Ausgabe der Zeilennr. gleich machen.

    mfg,
    bytepool
     
  6. #5 2TAKTER, 14.12.2007
    Zuletzt bearbeitet: 14.12.2007
    2TAKTER

    2TAKTER Foren As

    Dabei seit:
    26.11.2007
    Beiträge:
    94
    Zustimmungen:
    0
    Ort:
    Würzburg (zugezogen)
    Code:
    ZEILE=$(head -${VAR} bla.txt |tail -1)
    somit lässt du dir alle Zeilen ausgeben bis zu der, die du willst. Das tail schneidet dir dann alle bis auf die letzte ab.

    EDIT: Zur Lösung meines Vordermannes - diese gibt ja die Zeilennummer mit aus. Somit müsst man den String am Doppelpunkt wieder auftrennen.
     
  7. ramann

    ramann Eroberer

    Dabei seit:
    20.06.2007
    Beiträge:
    59
    Zustimmungen:
    0
    thanks :-)
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  9. #7 bytepool, 14.12.2007
    Zuletzt bearbeitet: 14.12.2007
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Richtig, wenn man die Zeilennr. davor noch weg haben moechte, muesste man das nochmal durch ein cut jagen, so gesehen ist deine Loesung wahrscheinlich effizienter.

    edit:
    Hier der Vollstaendigkeithalber nochmal der komplette Befehl wenn man die Zeilennr. vorne noch weg haben moechte:
    Code:
    grep -n "" bla.txt | grep "^$nr:" | cut -d':' -f 1 --complement
    
    Aber vor allem fuer grosse Dateien, und wenn die Zeile die man sucht weit oben steht ist die Loesung mit head und tail wirklich einiges effizienter, auch wenn der Unterschied auf heutiger Hardware irgendwo im hundertstel Sekunden Bereich liegt ;)

    mfg,
    bytepool
     
  10. #8 Wolfgang, 14.12.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Geht auch mit sed, allerdings sollte dann "" verwendet werden.
    Code:
    Var=10;
    sed -ne "${VAR}p" Datei
    
    
    Die einfachen Hochkomma fürhren dazu, dass die Variable nicht aufgelöst wird.

    Gruß Wolfgang
     
Thema:

in sed mit einer Variable suchen

Die Seite wird geladen...

in sed mit einer Variable suchen - Ähnliche Themen

  1. Wie komme ich an den Inhalt des Inhalts einer Variable?

    Wie komme ich an den Inhalt des Inhalts einer Variable?: Hallo Zusammen, ich möchte meine Buildumgebung vereinfachen und besser zu automatisieren. Ein Skript schreibt Pfade in die env und diese...
  2. Teil einer Variablen auslesen und in neue Variable schreiben

    Teil einer Variablen auslesen und in neue Variable schreiben: Hallo, ist für Euch bestimmt ganz einfach, aber trotz googlen komme ich nicht auf eine Lösung. In Variable x habe ich stehen: xy,ab Nun möchte...
  3. Dateiname einer Befehlsausgabe als Variable festlegen

    Dateiname einer Befehlsausgabe als Variable festlegen: Hallo zusammen, ich suche mit pdfgrep -H -R 1528/12/11 *nach einem bestimmten Ausdruck. Ausgabe ist z.B.: ---------- 305448.pdf:Mein...
  4. Variable aus einer Funktion abrufen

    Variable aus einer Funktion abrufen: Wie der Titel schon sagt, möchte ich eine Variable aus einer Funktion in einer anderen abrufen, zB. funktion1() { if [ blabla ] then...
  5. Inhalt einer Variablen aus Batch an Shellscript übergeben

    Inhalt einer Variablen aus Batch an Shellscript übergeben: Hallo, ich komme einfach nicht drauf. Wie kann ich den Wert aus einer Variablen eines Batches an mein Shellscript übergeben? So? #...