Extrahieren einer Zahl aus einer Dateizeile

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von upperlimit, 11.04.2005.

  1. #1 upperlimit, 11.04.2005
    upperlimit

    upperlimit Jungspund

    Dabei seit:
    11.04.2005
    Beiträge:
    16
    Zustimmungen:
    0
    Hallo,

    Ich zerbreche mir gerade den Kopf wegen einer eigentlich einfachen Frage. Dennoch habe ich bisher keine Lösung gefunden.

    Ich möchte die Seitenzahl einer postscript-Datei angeben. Das 'psselect'-Kommando liefert mir mittels

    psselect -p- file.ps >/dev/null

    beispielsweise:

    me@home: psselect -p- input.ps >/dev/null
    me@home: [1] [2] [3] [4] [5] [6] Wrote 6 pages, 603850 bytes

    Nun jedoch möchte ich die Seitenzahl (hier: 6) in einem Shell-Skript weiterverarbeiten.
    Wie komme ich an diese Zahl heran ? Da dieses Skript für beliebige postscript-Dateien gültig sein soll, ändert sich somit auch die Position der Zahl innerhalb der Zeile (ein 'cut'-Befehl schliesst sich daher wohl aus, oder?).
    Irgendwelche Vorschläge ?

    Danke und MfG,
    upperlimit
     
  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 monarch, 11.04.2005
    monarch

    monarch Schattenparker

    Dabei seit:
    13.02.2005
    Beiträge:
    222
    Zustimmungen:
    0
    Schau mal was der da im ersten Suchergebnis macht: Google

    Gibt kaum was was man in google nicht findet. Notfalls auf Englisch. :D
     
  4. #3 monarch, 11.04.2005
    monarch

    monarch Schattenparker

    Dabei seit:
    13.02.2005
    Beiträge:
    222
    Zustimmungen:
    0
    Mist, Doppelpost.
     
  5. cremi

    cremi Dude

    Dabei seit:
    15.02.2004
    Beiträge:
    329
    Zustimmungen:
    0
    Ort:
    AUT/Ktn
    Code:
    grep ^%%Pages InputFile.ps | awk  '{  print $2  }'
    
     
  6. #5 monarch, 11.04.2005
    monarch

    monarch Schattenparker

    Dabei seit:
    13.02.2005
    Beiträge:
    222
    Zustimmungen:
    0
    Super, genau das hab ich ihm doch oben schon vorgeschlagen
     
  7. cremi

    cremi Dude

    Dabei seit:
    15.02.2004
    Beiträge:
    329
    Zustimmungen:
    0
    Ort:
    AUT/Ktn
    hab ich nicht gesehen
     
  8. #7 upperlimit, 11.04.2005
    upperlimit

    upperlimit Jungspund

    Dabei seit:
    11.04.2005
    Beiträge:
    16
    Zustimmungen:
    0
    Ergänzung

    Hallo,

    vielen Dank zunächst einmal für die schnelle Antwort.
    Der präsentierte Code funktioniert größtenteils einwandfrei - allerdings nicht uneingeschränkt.
    Konkret: Bei vielen postscript-Dateien enthält das Ergebnis neben der Seitenzahl zudem den Code '(atend)' (vom Eintrag: %%Pages: (atend) im postscript-Quellcode), welcher jedoch mittels eines angehängten 'grep -v' eliminiert werden kann.
    Allerdings gibt es postscript-Dateien, welche ausser den '(atend)'-Einträgen weitere '%%Pages'-Einträge ausgeben.

    Beispiel:
    me@home: grep ^%%Pages input.ps | awk '{ print $2 }' | grep -v '(atend)'
    me@home: 211
    1
    1
    1
    1

    Diese Zahlen rühren meines Wissens nach von der Erzeugung mit 'latex' her, sofern man mehrere Unterkapitel (= mehrere tex-Dateien) benutzt.

    Dennoch danke nochmals,
    upperlimit
     
  9. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  10. #8 upperlimit, 11.04.2005
    upperlimit

    upperlimit Jungspund

    Dabei seit:
    11.04.2005
    Beiträge:
    16
    Zustimmungen:
    0
    Lösung

    Abschliessend möchte ich die Lösung meines Problems vorstellen (der zweite google-Link von oben brachte die Erleuchtung):

    Die Zeile

    psselect -p_1 input.ps 2>&1 > /dev/null | tr "[]" "\n\n" | grep ^[0-9]

    erfüllt demnach alle meine Wünsche.
    Ich denke, dem einen oder anderen wird es ebenfalls helfen.

    upperlimit
     
  11. #9 TenBaseT, 11.04.2005
    TenBaseT

    TenBaseT Foren As

    Dabei seit:
    07.11.2004
    Beiträge:
    99
    Zustimmungen:
    0
    Frage mich gerade , warum der Bfehl nicht auch zum Erfolg führt

    Code:
    [root@rosi bash-3.0]#
    [root@rosi bash-3.0]# awk "/^%%Pages:/ { print $2 }" article.ps
    %%Pages: 11
    [root@rosi bash-3.0]# 
    wenn ich eine article.awk anlege und aufrufe, dann geht's.
    Code:
    /^%%Pages:/ { print $2  }
    Code:
    [root@rosi bash-3.0]# awk -f article.awk article.ps
    11
    [root@rosi bash-3.0]#
    Hans
     
Thema:

Extrahieren einer Zahl aus einer Dateizeile

Die Seite wird geladen...

Extrahieren einer Zahl aus einer Dateizeile - Ähnliche Themen

  1. Teil aus einer Variablen Extrahieren

    Teil aus einer Variablen Extrahieren: Hi Ich hab eine Variable mit diesen Inhalt c:/qls/qls/kln/qsp/fax/log/1_111111.fax davon brauche ich nu den rest und zwar 1_111111.fax...
  2. .elf aus deb der rpm extrahieren?

    .elf aus deb der rpm extrahieren?: Hallo, ich habe ein ARM-chip mit einem minimalen Linux-Kernel, bin aber zu doof zum Cross-compilieren. Kann ich mir einfach einen .deb...
  3. Einen String extrahieren per Regex Hilfe gesucht

    Einen String extrahieren per Regex Hilfe gesucht: Hallo Leute, ich habe folgenden String: <td><font color="Black"><a href="url.tld?ID=AEA6EA04"...
  4. Bestimmte Links aus HTML Dateien extrahieren

    Bestimmte Links aus HTML Dateien extrahieren: Moin Wir (mein Programmier-Partner und ich) sollen ein Skript schreiben, welches Links aus einer lokalen HTML Datei extrahiert,filtert und...
  5. Links aus HTML-Seite extrahieren

    Links aus HTML-Seite extrahieren: Hallo, ich möchte aus einer lokalen HTML-Datei bestimmte Links extrahieren. Die Vorgehensweise ist durch Aufgabenstellung vorgeschrieben: 1....