Tengo una gran lista en un archivo txt de información de contacto. Necesito tomar los números de teléfono de una estructura como esta:
Necesitaría que el resultado fuera solo con números en el texto, por ejemplo:
- 4149611000
- 4143620851
- 3605966100
- 3096949898
- etc.
¿Qué comando en el cmd podría solucionar esto?
Respuesta1
tl; drperl -lne 'print $1 while /(\d{10})/g' filenames.txt ...
$ cat n.txt
aaaa 0123456789 bbbb
apple banana cucumber
9876543210 ccc ccc ccc
ppp qqq 12345 rrr sss
$ perl -lne 'print $1 if /(\d{10})/' n.txt
0123456789
9876543210
Si puede haber varios números de teléfono por línea y los desea todos:
$ echo double 1111111111 number 2222222222 here >> n.txt
$ perl -lne 'print $1 while /(\d{10})/g' n.txt
0123456789
9876543210
1111111111
2222222222
Si el número de teléfono es siempre el quinto campo separado por comas, puede utilizar
$ perl -F, -lne 'print $F[4]' m.txt
PHONE
1234567890
0987654321
Tenga en cuenta que Perl tiene índices basados en 0 (0,1,2, no 1,2,3)
O utilice herramientas más sencillas:
$ cut -d, -f5 m.txt
PHONE
1234567890
0987654321
Lo anterior se realizó usando WSL en Windows 10, pero el Perl nativo de Windows está disponible para el símbolo del sistema de Windows 10. Como esto:
C> perl -lne "print $1 while /(\d{10})/g" n.txt
0123456789
9876543210
1111111111
2222222222
Es casi seguro que hay una manera de hacer esto en PowerShell (aunque probablemente sea más necesario escribir)
Respuesta2
Usando Powershell, pruebe los siguientes cmdlets:
Get-Content -Path C:\path\to\yourfile.txt | Select-String "\d{10}" -AllMatches | ForEach {$_.Matches} | Select Value
O
Select-String -Path "C:\path\to\yourfile.txt" -Pattern "\d{10}" -AllMatches | Select -ExpandProperty Matches | Select Value
Esto mostrará sólo números de longitud de 10 dígitos. Si desea la salida en un archivo:
Get-Content -Path C:\path\to\yourfile.txt | Select-String "\d{10}" -AllMatches | ForEach-Object {$_.Matches} | Select Value | Out-File output.txt