从txt文件中提取数字

从txt文件中提取数字

我在 txt 文件中有一个很大的联系信息列表。我需要从如下结构中获取电话号码:

例子

我需要输出仅包含文本中的数字,例如:

  • 4149611000
  • 4143620851
  • 3605966100
  • 3096949898
  • ETC。

cmd 中的什么命令可以解决这个问题?

答案1

总结perl -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

如果电话号码始终是第 5 个逗号分隔的字段,则可以使用

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

注意 perl 有基于 0 的索引(0,1,2 而不是 1,2,3)

或者使用更简单的工具:

$ 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

相关内容