Wie würden Sie nach einer Zeile suchen, die nur 5 oder 6 Zahlen enthält? Etwas in der Art.
Fall 1 (mit führendem Leerzeichen)
10 2 12 1 13
Fall 2 (kein führendes Leerzeichen)
1 2 3 4 5 6
Ich dachte, so etwas würde funktionieren.
grep -E '[0-9]{5}'
Akzeptierte Antwort:
grep -E '[0-9]{5}'
sucht nach Nummern mit mindestens 5 Ziffern. Was Sie brauchen, sind 5 Zahlen mit mindestens einer Ziffer:
grep -E '[0-9]+([^0-9]+[0-9]+){4}'
[0-9]+
– eine Zahl mit mindestens einer Ziffer[^0-9]+[0-9]+
– eine Zahl mit mindestens einer Ziffer, der mindestens ein nicht-stelliges Zeichen vorangestellt ist. Wir wiederholen dies dann 4 Mal, um 5 Zahlen zu erhalten, die durch Nichtziffern getrennt sind.- Wenn die Anforderung genau 5 ist, möchten Sie diese Regex vielleicht mit
[^0-9]
umgeben damit die ganze Linie passt (natürlich mit den Ankern). - Je nachdem, was Sie hier wollen (macht
1,2,3,4,6
qualifizieren?), könnten Sie sich andere Trennzeichen ansehen. Zum Beispiel würde eine richtige reelle Zahl in wissenschaftlicher Notation wie folgt aussehen:[+-]?(([0-9]+(.[0-9]+)?)|([0-9]?.[0-9]+))([eE][+-][0-9]+)?
Daher dürfen Trennzeichen nicht.
enthalten ,e
usw. Sie dürfen nur Leerzeichen sein, wiemikeserv
Anmerkungen. Oder vielleicht Kommas, wenn es sich um einen CSV-Eintrag handelt. Oder je nach Gebietsschema wäre ein Komma das Dezimaltrennzeichen. Variieren Sie[^0-9]
je nach Bedarf.