Kommazahlen in Dokument finden

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
mowses
Beiträge: 106
Registriert: 09.05.2003 15:33:01

Kommazahlen in Dokument finden

Beitrag von mowses » 03.10.2007 11:17:55

Hallo,

Ich schreibe momentan meine Diplomarbeit und muss dabei Kommazahlen suchen bei denen anstelle des Kommas ein Punkt benutzt wurde. Geschrieben ist das ganze in LaTeX und ich möchte eigentlich gerne grep benutzen um die ganzen Quelldateien zu durchsuchen. Nur finde ich noch nicht die richtigen Parameter um zu suchen.

Folgendes habe ich versucht um erst mal nach normalen Kommazahlen zu suchen.
egrep '\d+\,\d+' datei.tex
egrep '[:digit]+\,[:digit]+' datei.tex

Da gibt er aber nichts aus, obwohl welche drin sind. Ich will einfach nur nach Kommata/Punkten suchen, die vorher und nacher eine oder mehr Ziffern haben...

Hat da jemand den Stupser in die richtige Richtung für mich?

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Beitrag von roli » 03.10.2007 11:49:37

Hi,

das sieht fuer mich aus, als waere dein Problem wie gemacht für sed.
Ohne es getestet zu haben:

Code: Alles auswählen

cat Datei_mit_punkt | sed -e "s/\./,/g' >datei_mit_komma
Damit sollten alle Punkte durch Kommas ersetzt werden, wenn das zu "aggressiv" ist, kannst du auch hier regulaere Ausdruecke verwenden.

<edit>Code angepasst</edit>
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

mowses
Beiträge: 106
Registriert: 09.05.2003 15:33:01

Beitrag von mowses » 03.10.2007 11:55:05

Schon mal vielen Dank für deine Antwort.

Das geht aber so natürlich nicht. ;-) Denn das ist keine reine Wertedatei. Es ist eine Textdatei in der ab und zu Zahlen vorkommen. Wenn ich deine Variante nutze, dann ändert er ja alles Punkte die als Satzende dienen in Kommas...

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Beitrag von ThorstenS » 03.10.2007 11:55:41

Machs einfach so:

Code: Alles auswählen

export GREP_OPTIONS='--color=always'
export GREP_COLOR='1;46;37'
egrep "[[:digit:]],[[:digit:]]" komma.tex
(funktioniert unter etch einwandfrei)

mowses
Beiträge: 106
Registriert: 09.05.2003 15:33:01

Beitrag von mowses » 03.10.2007 12:03:04

ThorstenS hat geschrieben:Machs einfach so:

Code: Alles auswählen

export GREP_OPTIONS='--color=always'
export GREP_COLOR='1;46;37'
egrep "[[:digit:]],[[:digit:]]" komma.tex
(funktioniert unter etch einwandfrei)
In der Tat! Das klappt.

Ich hatte wohl den Fehler gemacht, die beiden eckigen Klammern um das [:digit] Konstrukt wegzulassen. Allerdings hatte ich das am Anfang und da hatte er gemeckert. Aber vielleicht lag das dann auch wieder an den einfachen bzw. doppelten Anführungszeichen... Puuhh

Ich habe nun zum auffinden der bösen Punkte folgende Variante genutzt

Code: Alles auswählen

egrep -n "\[[[:digit:]]\.[[:digit:]]" *.tex
Das \[ am Anfang ist nötig, damit nur die Zahlen in der \unit Umgebung gesucht werden. Sonst spuckt er mir noch sämtliche uninteressanten Maßangaben die LaTeX intern sind aus.

Vielen Dank euch zweien![/code]

Antworten