Extrahieren einer Zahl aus einer Dateizeile

U

upperlimit

Jungspund
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
 
Schau mal was der da im ersten Suchergebnis macht: Google

Gibt kaum was was man in google nicht findet. Notfalls auf Englisch. :D
 
Super, genau das hab ich ihm doch oben schon vorgeschlagen
 
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
 
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
 
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
 

Ähnliche Themen

HP PSC 2175 - CUPS druckt nicht

Server-Monitoring mit RRDTool

Zurück
Oben