in sed mit einer Variable suchen

R

ramann

Eroberer
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
 
hi,

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

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
 
jo, habe mich falsch ausgedrückt. Haben tue ich die Zeilennummer in einer Variablen und möchte die entsprechende Zeile aus der Datei haben :-)
 
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
 
Zuletzt bearbeitet:
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.
 
Zuletzt bearbeitet:
EDIT: Zur Lösung meines Vordermannes - diese gibt ja die Zeilennummer mit aus. Somit müsst man den String am Doppelpunkt wieder auftrennen.

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
 
Zuletzt bearbeitet:
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
 

Ähnliche Themen

Wie komme ich an den Inhalt des Inhalts einer Variable?

[Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter

Liste mischen. Alternativen zu sort -R

PATH wird nicht richtig durchsucht

sed Wort suchen und Zeile komplett löschen

Zurück
Oben