Liest Zeilen beginnend mit einer Zeilennummer in einem Bash-Skript

8

Ich versuche eine Datei Zeile für Zeile zu lesen, beginnend mit einer bestimmten Zeile in bash. Ich habe den while-Befehl bereits benutzt, um jede Zeile der Datei zu lesen, indem ich die Zählung inkrementiere. Kann ich es von einer bestimmten Linie aus starten lassen?

%Vor%

Jede Art von Hilfe in Form von Vorschlägen oder Algorithmen ist willkommen.

Edit: Ich versuche die Zeilennummer als Variable zu übergeben. Ich bin Grepping für ein bestimmtes Muster und wenn gefunden, sollte die Zeilennummer beginnend mit dem Muster übergeben.

    
Gil 19.06.2012, 13:47
quelle

5 Antworten

11

Ich würde die Adressen von sed verwenden, um bei einer bestimmten Zeile zu beginnen Nummer und drucken Sie bis zum Ende der Datei:

%Vor%

Entweder das oder, wie Fredrik vorgeschlagen hat, awk :

%Vor%     
Tim Pote 19.06.2012, 15:22
quelle
4

Was ist mit so etwas?

%Vor%

Es ist nicht POSIX-kompatibel, aber versuchen Sie es mit Ihrer Bash. Natürlich, tun Sie, was Sie wollen mit $ Zeile innerhalb der While-Schleife.
PS: Ändern Sie die Nummer mit der gewünschten Nummer Zeile und file.name mit dem Dateinamen.

    
Simone-Cu 19.06.2012 14:34
quelle
2

Einige der vielen Möglichkeiten: Ссылка

Persönlich:

%Vor%

Verwenden Sie auch keine Großbuchstaben-Variablennamen.

    
ormaaj 19.06.2012 13:58
quelle
1

Behalte einfach einen Zähler. Um alle Zeilen nach einer bestimmten Zeile zu drucken, können Sie Folgendes tun:

%Vor%

oder, warum nicht awk:

%Vor%     
Fredrik Pihl 19.06.2012 14:11
quelle
0

Gehen Sie einfach eine bestimmte Anzahl von Zeilen bis zu der gewünschten Nummer durch und beginnen Sie Ihre Logik, um den Rest zu lesen.

Es gibt keine Möglichkeit, eine "Text" -Datei zu sparen, Sie können Zeilen nicht überspringen, ohne sie tatsächlich zu lesen. Die Linien sind durch 0x0a und variable Längen begrenzt. Daher muss jeder Begrenzer gescannt und gezählt werden, um eine bestimmte "Zeilennummer" zu erreichen. Es gibt Gimmicks, die dich glauben lassen, du hättest sie nicht gelesen, aber du hast es getan.

    
pizza 19.06.2012 20:21
quelle

Tags und Links