die Zeile bei x%

Diskutiere die Zeile bei x% im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; 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....

  1. #1 flappinski, 20.02.2008
    flappinski

    flappinski Foren As

    Dabei seit:
    31.03.2006
    Beiträge:
    87
    Zustimmungen:
    0
    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
     
  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 L0s3r, 20.02.2008
    Zuletzt bearbeitet: 20.02.2008
    L0s3r

    L0s3r Tripel-As

    Dabei seit:
    22.09.2007
    Beiträge:
    216
    Zustimmungen:
    0
    Ort:
    MV
    Code:
    LINENUMBERS=$(wc -l input_file | awk '{print $1}')
    head -n $(echo "$LINENUMBERS * 30 / 100" | bc) input_file | tail -1
    So z.B.?
     
  4. #3 Gott_in_schwarz, 20.02.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    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.
     
  5. #4 flappinski, 20.02.2008
    flappinski

    flappinski Foren As

    Dabei seit:
    31.03.2006
    Beiträge:
    87
    Zustimmungen:
    0
    wunderbar, vielen dank!
     
  6. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

die Zeile bei x%

Die Seite wird geladen...

die Zeile bei x% - Ähnliche Themen

  1. Audioaufnahme via Komandozeile möglich

    Audioaufnahme via Komandozeile möglich: Moinsen, einige wenige male habe ich eine Audioaufnahme mit einen alten WinXP- Rechner gemacht. Es handelt sich hierbei um Radiomitschnitte mit...
  2. Summe von Zahlen in einer Zeilen bilden

    Summe von Zahlen in einer Zeilen bilden: Auf ein Neues... Ich komme bei folgender Problematik nicht weiter: Ich habe eine Datei (zahlen.txt), die ich einlese mit folgenden Daten: 111 222...
  3. Bestimmte Zeilen einer Spalte addieren

    Bestimmte Zeilen einer Spalte addieren: Hallo, würde mich über Hilfe in Form eines Unix-Befehls oder AWK bei folgendem Problem freuen: Ich habe eine Textdatei, in der Werte drin sind in...
  4. Suche in Datei doppelte Wörter in jeder Zeile bis zum dritten Leerzeichen...

    Suche in Datei doppelte Wörter in jeder Zeile bis zum dritten Leerzeichen...: Ich habe eine Textdatei in der ich Einträge bis zum 3. Leerzeichen mit den restlichen Zeilen (auch nur bis 3. Leerzeichen) vergleichen muss und...
  5. 2 Zeilen aus einer txt auslesen

    2 Zeilen aus einer txt auslesen: Hallo Leute, ich habe eine Datei die immer aus zwei zusammenhängenden Zeilen besteht, als Beispiel: DE0006231004 # 15,04 Infineon DE0005785604...