txt 파일에서 숫자 추출

txt 파일에서 숫자 추출

연락처 정보의 txt 파일에 큰 목록이 있습니다. 다음과 같은 구조에서 전화번호를 가져와야 합니다.

예

텍스트에 숫자만 포함된 출력이 필요합니다. 예를 들면 다음과 같습니다.

  • 4149611000
  • 4143620851
  • 3605966100
  • 3096949898
  • 등.

cmd의 어떤 명령이 이것을 정렬할 수 있습니까?

답변1

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

회선당 전화번호가 여러 개 있을 수 있고 모두 사용하려는 경우:

$ echo double 1111111111 number 2222222222 here >> n.txt
$ perl -lne 'print $1 while /(\d{10})/g' n.txt
0123456789
9876543210
1111111111
2222222222

전화번호가 항상 쉼표로 구분된 다섯 번째 필드인 경우 다음을 사용할 수 있습니다.

$ perl -F, -lne 'print $F[4]' m.txt 
PHONE
1234567890
0987654321

참고 Perl에는 0 기반 인덱스가 있습니다(1,2,3이 아닌 0,1,2).

또는 더 간단한 도구를 사용하세요.

$ cut -d, -f5 m.txt
PHONE
1234567890
0987654321

위의 작업은 Windows 10에서 WSL을 사용하여 수행되었지만 Windows 10 명령 프롬프트에서는 기본 Windows Perl을 사용할 수 있습니다. 이와 같이:

C> perl -lne "print $1 while /(\d{10})/g" n.txt
0123456789
9876543210
1111111111
2222222222

Powershell에서 이 작업을 수행할 수 있는 방법이 거의 확실합니다(아마도 더 많은 입력이 필요할 수 있음).

답변2

Powershell을 사용하여 다음 cmdlet을 사용해 보세요.

Get-Content -Path C:\path\to\yourfile.txt | Select-String "\d{10}" -AllMatches | ForEach {$_.Matches} | Select Value

또는

Select-String -Path "C:\path\to\yourfile.txt" -Pattern "\d{10}" -AllMatches | Select -ExpandProperty Matches | Select Value

그러면 10자리 숫자만 표시됩니다. 파일로 출력하려면 다음을 수행하십시오.

Get-Content -Path C:\path\to\yourfile.txt | Select-String "\d{10}" -AllMatches | ForEach-Object {$_.Matches} | Select Value | Out-File output.txt

관련 정보