¿Cómo buscaría una línea que contenga solo 5 o 6 números? Algo como esto.
caso 1 (tiene espacio inicial)
10 2 12 1 13
caso 2 (sin espacio inicial)
1 2 3 4 5 6
Pensé que algo como esto funcionaría.
grep -E '[0-9]{5}'
Respuesta aceptada:
grep -E '[0-9]{5}'
está buscando números con al menos 5 dígitos. Lo que necesitas son 5 números con al menos un dígito:
grep -E '[0-9]+([^0-9]+[0-9]+){4}'
[0-9]+
– un número de al menos un dígito[^0-9]+[0-9]+
– un número con al menos un dígito, precedido por al menos un carácter que no sea un dígito. Luego repetimos esto 4 veces para obtener 5 números separados por no dígitos.- Si el requisito es exactamente 5, es posible que desee rodear esta expresión regular con
[^0-9]
para que toda la línea coincida (con los anclajes, por supuesto). - Dependiendo de lo que desee aquí (¿
1,2,3,4,6
calificar?), puede buscar otros separadores. Por ejemplo, un número real de notación científica apropiado se vería así:[+-]?(([0-9]+(.[0-9]+)?)|([0-9]?.[0-9]+))([eE][+-][0-9]+)?
Por lo tanto, los separadores pueden no incluir.
,e
, etc. Solo pueden ser espacios en blanco, comomikeserv
notas O tal vez comas, si es un registro CSV. O, según la configuración regional, una coma sería el separador decimal. Variar[^0-9]
según su necesidad.