die Zeile bei x%

flappinski

flappinski

Foren As
Hallo:
ich habe folgendes Problem: Mein Text-Input-File hat x Zeilen. Jetzt möchte ich die Zeile, die bei 30% der Zeilen steht ausgegeben haben. Also bei 200.000 Zeilen möchte ich die 60.000ste Zeile haben. Das geht natürlich irgendwie mit awk, aber ich würde gerne das über die shell tools lösen.
ungefähr so:
wc -l input_file | hier einlesen in eine variable z
head -n (z*0.3) input_file | tail -1

nun weiss ich nicht, wie die Ausgabe eines Tools in eine shell-variable einlesen kann.
Vielleicht könnt ihr mir helfen (das könnt ihr bestimmt, sogar),
Danke,
Stephan
 
Code:
LINENUMBERS=$(wc -l input_file | awk '{print $1}')
head -n $(echo "$LINENUMBERS * 30 / 100" | bc) input_file | tail -1

So z.B.?
 
Zuletzt bearbeitet:
nun weiss ich nicht, wie die Ausgabe eines Tools in eine shell-variable einlesen kann.

in der bourne again shell geht das mit:
Code:
var=$(echo 'zomg')
LINE_C=$(wc -l inFile|awk '{print $1}')
den awk befehl hab ich da rein gepackt, weil wc bei mir auch das inFile mit ausgibt, ansonsten könntest du es auch über cat machen:
Code:
LINE_C=$(cat inFile|wc -l)
und btw: rechnen kannst du in der bash mit:
Code:
i=2
x=5
((i=i*x+3)) #i ist jetzt 13
v=$((i-x)) #v ist jetzt 8
das man da allerdings floating point benutzen darf wäre mir neu (also afaik nur integer...) aber dafür gibts ja andere programme.. (siehe auch losers post.)
und in der sh geht das hier afaik auch nicht:
Code:
var=$(echo 'bla')
da müsste man dann iirc diese etwas "veraltete" schreibweise benutzen:
Code:
var=`echo 'bla'`
also mit backticks.
 

Ähnliche Themen

Sehr große Datei in Teilschritten auslesen.

Anzahl von Buchstaben (-paare, -tripel) aus Text auslesen

Ubuntu X / dbus problem

Neue ausführbare Datei mit Datensätzen aus einer Datei und Variablen erstellen

Zeilen filtern

Zurück
Oben