¿Cómo puedo usar grep para hacer coincidir 3 números en un archivo? Mi archivo se ve así:
123 122 222 333443 fdsfs5454353 dsfsfjsk4654641Tenga en cuenta que algunas de las líneas contienen espacios finales. Solo quiero hacer coincidir números de tres dígitos. Lo intenté:
grep -E [0-9]{3} test.txt grep -E '\<[0-9]{3}\>' test.txtgrep '^[0-9][0-9]*' test|awk '{if(length($0) == 3) print $0}'o si tiene espacios en blanco:
sed 's/[ \t]*$//' test|grep '^[0-9][0-9]*'|awk '{if(length($0) == 3) print $0}'(gracias @shellter)
Le pregunté si se refería a números con exactamente tres dígitos, o cada coincidencia de tres dígitos en una cadena. Respondió que solo quería líneas que contuvieran exactamente tres dígitos.
Extended grep proporciona una solución fácil para esto. Considera lo siguiente:
$ egrep '^\d{3}\b' /tmp/corpus 123 122 222Esto utiliza un límite (también conocido como rango) para buscar exactamente tres dígitos al comienzo de cada línea, seguidos de un límite de palabra. El límite de la palabra coincidirá con el espacio final o el final de la línea, lo que garantiza que obtenga la coincidencia adecuada en cualquier caso.