Come faresti a grep per una riga contenente solo 5 o 6 numeri? Qualcosa del genere.
caso 1 (ha uno spazio iniziale)
10 2 12 1 13
caso 2 (nessuno spazio iniziale)
1 2 3 4 5 6
Pensavo che una cosa del genere avrebbe funzionato.
grep -E '[0-9]{5}'
Risposta accettata:
grep -E '[0-9]{5}'
sta cercando numeri con almeno 5 cifre. Quello che ti serve sono 5 numeri con almeno una cifra:
grep -E '[0-9]+([^0-9]+[0-9]+){4}'
[0-9]+
– un numero di almeno una cifra[^0-9]+[0-9]+
– un numero con almeno una cifra, preceduto da almeno un carattere diverso da una cifra. Quindi lo ripetiamo 4 volte per ottenere 5 numeri separati da non cifre.- Se il requisito è esattamente 5, potresti voler circondare questa espressione regolare con
[^0-9]
in modo che l'intera linea sia abbinata (con gli ancoraggi, ovviamente). - A seconda di cosa vuoi qui (
1,2,3,4,6
qualificato?), potresti guardare altri separatori. Ad esempio, un numero reale di notazione scientifica corretta sarebbe simile a:[+-]?(([0-9]+(.[0-9]+)?)|([0-9]?.[0-9]+))([eE][+-][0-9]+)?
Quindi i separatori potrebbero non includere.
,e
, ecc. Possono essere solo spazi bianchi, comemikeserv
Appunti. O forse le virgole, se si tratta di un record CSV. Oppure, a seconda delle impostazioni locali, una virgola sarebbe il separatore decimale. Varia[^0-9]
secondo la tua esigenza.