Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

Zeilennummer auslesen

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
jacos
Newbie
Newbie
Beiträge: 2
Registriert: 8. Dez 2004, 10:19

Zeilennummer auslesen

Beitrag von jacos »

Ich bin neu hier, und weiss auch nicht ob meine Frage hier reinpasst.

Gibt es einen Befehl mit dem ich in einer Datei nach einem bestimmten Wort suche und mir dann die Zeilennummer zurückgibt. Ich weiss dass grep -n das kann. Grep -n gibt mir aber nach der Zeilennummer noch das gesuchte Wort aus. Oder wie kann ich die Zeilennummer in einer Variablen abspeichern???

Beispiel:
grep -n "hallo" datei

ergibt z.B.

14:hallo

hier möchte ich jetzt die 14 in einer Variablen abspeicher, damit ich die Zahl weiterverarbeiten kann.
Benutzeravatar
regexer
Advanced Hacker
Advanced Hacker
Beiträge: 1005
Registriert: 3. Dez 2004, 09:29
Wohnort: $_

Beitrag von regexer »

Hallo,

Deine Vermutung ist richtig!

grep -n gibt die Zeilennummer aus.

Wenn du den Zeileinhalt selbst nicht willst, kannst du alles ab dem Doppelpunkt abscheinden. Zum Beispiel mit:

grep -n "hallo" datei | cut -d':' -f1

Wenn die datei mehrmals "hallo" enthält und du nur den ersten Treffer willst:

grep -n "hallo" datei | cut -d':' -f1 | head -1

Für den letzten Treffer einfach den Befehl "head" durch "tail" ersetzen.

Wenn du das ganze noch in einer Umgebungs-Variablen haben willst:

variable=`grep -n "hallo" datei | cut -d':' -f1 | head -1`

Dabei ist darauf zu achten, dass der komplette Befehlssatz mit accent grave und NICHT mit einfachen Hochkommas eingerahmt ist.

Alles klar?
jacos
Newbie
Newbie
Beiträge: 2
Registriert: 8. Dez 2004, 10:19

Beitrag von jacos »

Danke. Das hat mich schon mal sehr viel weiter gebracht.
Gibt es auch noch die Möglichkeit, wenn hallo sehr oft vorkommt nur die Nummer der z.B. fünften gefundenen Zeile in einer Variablen abzuspeichern?
Benutzeravatar
regexer
Advanced Hacker
Advanced Hacker
Beiträge: 1005
Registriert: 3. Dez 2004, 09:29
Wohnort: $_

Beitrag von regexer »

jacos hat geschrieben:wenn hallo sehr oft vorkommt nur die Nummer der z.B. fünften gefundenen Zeile in einer Variablen abzuspeichern?

Code: Alles auswählen

variable=`grep -n "hallo" datei | cut -d':' -f1 | head -5 | tail -1`

head -5 zeigt die ersten fünf Treffer
tail -1 zeigt davon wiederum die letzte Zeile, also die fünfte

Solle es jedoch nur vier Treffer geben, wird der vierte genommen. "Head" und "tail" lassen sich übrigens auch auf normale Dateien anwenden.
head -5 datei | tail -1 zeigt ebenfalls die fünfte Zeile einer Datei.
Antworten