grep: Suche nach einer Ziffernfolge mit konstanter Länge funktioniert nicht
![](https://seccdn.libravatar.org/avatar/3b88186bea83a1e6f8dc1e8959e80e75.jpg?s=120&d=mm&r=g)
Hi, ich habe eine Textdatei, die wie folgt aussieht: 1441 | 7489 | 6535 | 7 | <?xml version="1.0" encoding="UTF-8"?> : <java version="1.7.0_45" class="java.beans.XMLDecoder"> : <object class="com.hp.mx.core.protocol.snmp.trap.TrapInfo"> : <void property="securityLevel"> : <string>1</string> : </void> : <void property="securityModel"> : <string>2</string> : </void> : <void property="trapAddress"> : <string>146.107.235.132</string> : </void> : <void property="trapCommunity"> : <string>idg-ha</string> : </void> : <void property="trapEnterprise"> : <string>1.3.6.1.4.1.32723</string> : </void> : <void property="trapGenericId"> : <string>6</string> : </void> : <void property="trapSpecificId"> : <string>1</string> : </void> : <void property="trapStackAddress"> : <string>146.107.235.132</string> : </void> : <void property="trapTime"> : <string>1501589974</string> <====================================== : </void> : <void property="trapVarbindCount"> : <int>7</int> : </void> : <void property="trapVarbindName"> : <void method="add"> : <string>1.3.6.1.4.1.32723.1.2</string> : </void> : <void method="add"> : <string>1.3.6.1.4.1.32723.1.1</string> : </void> : <void method="add"> : <string>1.3.6.1.4.1.32723.1.3</string> : <void method="add"> : <string>1.3.6.1.4.1.32723.1.3</string> : </void> : <void method="add"> : <string>1.3.6.1.4.1.32723.1.4</string> : </void> : <void method="add"> : <string>1.3.6.1.4.1.32723.1.6</string> : </void> : <void method="add"> : <string>1.3.6.1.4.1.32723.1.7</string> : </void> : <void method="add"> : <string>1.3.6.1.4.1.32723.1.5</string> : </void> : </void> : <void property="trapVarbindType"> : <void method="add"> : <string>ASN_OCTETSTRING</string> : </void> : <void method="add"> : <string>ASN_OCTETSTRING</string> : </void> : <void method="add"> : <string>ASN_OCTETSTRING</string> : </void> : <void method="add"> : <string>ASN_OCTETSTRING</string> : </void> : <void method="add"> : <string>ASN_INTEGER</string> : </void> : <void method="add"> : <string>ASN_INTEGER</string> : </void> : <void method="add"> : <string>ASN_INTEGER</string> : </void> : </void> : <void property="trapVarbindValue"> : <void method="add"> : <string>prim_drbd_idcc_devel</string> : </void> : <void method="add"> : <string>ha-idg-2</string> : </void> : <void method="add"> : <string>stop</string> : </void> : <void method="add"> : <string>not configured</string> : </void> : <void method="add"> : <string>6</string> : </void> : <void method="add"> : <string>0</string> : </void> : <void method="add"> : <string>0</string> : </void> : </void> : </object> : </java> : ... Dieses Muster wiederholt sich laufend. Es handelt sich um die umgeleitete Ausgabe einer Datenbankabfrage. Wichtig ist mir die Ziffernfolge bei trapTime (hab's markiert). Dies ist die Zeit in Unix Format. Diese Ziffernfolge taucht ca. 20.000 mal in der Datei auf und ist immer 10 Ziffern lang. Greppe ich nach einer dedizierten Ziffernfolge, kriege ich Treffer. Aber weder mit [0-9]{10} noch mit [0123456789]{10} oder [[:digit:]]{10} oder [[:digit:]]\{10\} oder '[[:digit:]]{10}' kriege ich Treffer. Häh ? [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] funktioniert, aber das ist wirklich häßlich. Bernd -- Bernd Lentes Systemadministration institute of developmental genetics Gebäude 35.34 - Raum 208 HelmholtzZentrum München bernd.lentes@helmholtz-muenchen.de phone: +49 (0)89 3187 1241 fax: +49 (0)89 3187 2294 no backup - no mercy Helmholtz Zentrum Muenchen Deutsches Forschungszentrum fuer Gesundheit und Umwelt (GmbH) Ingolstaedter Landstr. 1 85764 Neuherberg www.helmholtz-muenchen.de Aufsichtsratsvorsitzende: MinDir'in Baerbel Brumme-Bothe Geschaeftsfuehrer: Prof. Dr. Guenther Wess, Heinrich Bassler, Dr. Alfons Enhsen Registergericht: Amtsgericht Muenchen HRB 6466 USt-IdNr: DE 129521671 -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
![](https://seccdn.libravatar.org/avatar/94da557ca4ff2e46fd67b511d037e66a.jpg?s=120&d=mm&r=g)
Hallo, Am 04.08.2017 um 16:18 schrieb Lentes, Bernd:
Hi,
ich habe eine Textdatei, die wie folgt aussieht:
1441 | 7489 | 6535 | 7 | <?xml version="1.0" encoding="UTF-8"?> : <java version="1.7.0_45" class="java.beans.XMLDecoder"> [...] : <string>146.107.235.132</string> : </void> : <void property="trapTime"> : <string>1501589974</string> <====================================== : </void> : <void property="trapVarbindCount"> : <int>7</int>
[...]
Dieses Muster wiederholt sich laufend. Es handelt sich um die umgeleitete Ausgabe einer Datenbankabfrage. Wichtig ist mir die Ziffernfolge bei trapTime (hab's markiert). Dies ist die Zeit in Unix Format. Diese Ziffernfolge taucht ca. 20.000 mal in der Datei auf und ist immer 10 Ziffern lang. Greppe ich nach einer dedizierten Ziffernfolge, kriege ich Treffer. Aber weder mit [0-9]{10} noch mit [0123456789]{10} oder [[:digit:]]{10} oder [[:digit:]]\{10\} oder '[[:digit:]]{10}' kriege ich Treffer. Häh ? [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] funktioniert, aber das ist wirklich häßlich.
grep '[0-9]\{10,10\}' sollte das gewünschte liefern
Bernd
-- Mit freundlichen Grüßen Mirko Richter ------------------------------------------------------------------- Networks & Communicationsystems Mirko Richter Ernst-Thaelmann-Str. 5, D-06905 Bad Schmiedeberg, Soellichau Tel. +49/(0)34243/3369-566 Fax. +49/(0)34243/3369-200 www.nacmr.de, www.nacmr.com www.nacmr-shop.com -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
![](https://seccdn.libravatar.org/avatar/164a625f3a558d1dac0727ce6a3ba850.jpg?s=120&d=mm&r=g)
Lentes, Bernd [04.08.2017 16:18]:
Hi,
ich habe eine Textdatei, die wie folgt aussieht:
1441 | 7489 | 6535 | 7 | <?xml version="1.0" encoding="UTF-8"?> : <java version="1.7.0_45" class="java.beans.XMLDecoder"> : <object class="com.hp.mx.core.protocol.snmp.trap.TrapInfo">
: <void property="trapTime"> : <string>1501589974</string> <====================================== : </void>
...
Dieses Muster wiederholt sich laufend. Es handelt sich um die umgeleitete Ausgabe einer Datenbankabfrage. Wichtig ist mir die Ziffernfolge bei trapTime (hab's markiert). Dies ist die Zeit in Unix Format. Diese Ziffernfolge taucht ca. 20.000 mal in der Datei auf und ist immer 10 Ziffern lang. Greppe ich nach einer dedizierten Ziffernfolge, kriege ich Treffer. Aber weder mit [0-9]{10} noch mit [0123456789]{10} oder [[:digit:]]{10} oder [[:digit:]]\{10\} oder '[[:digit:]]{10}' kriege ich Treffer. Häh ? [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] funktioniert, aber das ist wirklich häßlich.
Bernd
Hallo Bernd, wenn ich (so komplexe Daten habe ich nicht) alle dreistelligen Ports aus der /etc/services ziehen will, klappt *nicht* grep '\b[0-9]{3}[^0-9]' /etc/services aber es klappt sehr wohl egrep '\b[0-9]{3}[^0-9]' /etc/services Das wäre bei Dir entsprechend egrep '[0-9]{10}' /deine/datei Statt egrep kannst Du auch auch "grep -E" verwenden :) Die Separatoren \b und [^0-9] nehme ich nur, damit nicht auch längere Zahlen genommen werden... HDH, Werner --
![](https://seccdn.libravatar.org/avatar/638c5f9b9a41e53d4663197a58261c49.jpg?s=120&d=mm&r=g)
Hallo, Am Fri, 04 Aug 2017, Lentes, Bernd schrieb:
ich habe eine Textdatei, die wie folgt aussieht:
1441 | 7489 | 6535 | 7 | <?xml version="1.0" encoding="UTF-8"?> [..] : <void property="trapTime"> : <string>1501589974</string> <====================================== [..]
Aber weder mit [0-9]{10} noch mit [0123456789]{10} oder [[:digit:]]{10} oder [[:digit:]]\{10\} oder '[[:digit:]]{10}' kriege ich Treffer. Häh ?
man grep -> grep -E wurde ja schon genannt. Kannst du nicht nur das XML abspeichern? Dann könntest du xml_grep oder xmlstarlet verwenden. Ansonsten bietet sich pcregrep an: pcregrep -o1 '<string>(\d{10})</' Siehe man pcregrep, man pcrepattern. HTH, -dnh -- It was the day my grandmother exploded. -- "The Crow Road", Iain Banks -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
![](https://seccdn.libravatar.org/avatar/3bc64bb793cf22fd052ba5a860075f2e.jpg?s=120&d=mm&r=g)
Hi,
Hi,
ich habe eine Textdatei, die wie folgt aussieht:
1441 | 7489 | 6535 | 7 | <?xml version="1.0" [...] Dieses Muster wiederholt sich laufend. Es handelt sich um die umgeleitete Ausgabe einer Datenbankabfrage. Wichtig ist mir die Ziffernfolge bei trapTime (hab's markiert). Dies ist die Zeit in Unix Format. Diese Ziffernfolge taucht ca. 20.000 mal in der Datei auf und ist immer 10 Ziffern lang. Greppe ich nach einer dedizierten Ziffernfolge, kriege ich Treffer. Aber weder mit [0-9]{10} noch mit [0123456789]{10} oder [[:digit:]]{10} oder [[:digit:]]\{10\} oder '[[:digit:]]{10}' kriege ich Treffer. Häh ? [0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] funktioniert, aber das ist wirklich häßlich.
nimm grep -P
Bernd
Ciao. Michael. -- Michael Hirmke -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
participants (5)
-
David Haller
-
Lentes, Bernd
-
Lists
-
mh@mike.franken.de
-
Werner Flamme