使用 powershell 从文件中仅检索数字

使用 powershell 从文件中仅检索数字

我有包含以下内容的 file.txt:

    34455
    55676
66677
6888868,
6688886
n\
n\

我怎样才能检索 5 到 7 之间的数字,而不包含任何字符或空格?预期输出如下:

34455
55676
66677
6888868
6688886

答案1

只需读取文件并获取数字匹配,使用 Get-Content 使用 -replace 开关使用正则表达式获取数据。你想要的是常见的字符串替换。

# https://wisetut.com/only-numbers-in-regex-regular-expression/
(Get-Content -Path 'D:\Scripts\MyNumbersFile.txt') -match '\d'

阅读有关 PS 文件管理的内容:

更新-试试这个:

(Get-Content -Path 'D:\Scripts\MyNumbersFile.txt') -match '\d' -replace '\s*' -replace ','

更新-其他想法

Clear-Host
('

    34455
    55676
66677
6888868,
6688886
n\
n\
' | ConvertFrom-Csv -Header MyNumber) -match '\d'

# Results
<#
MyNumber
--------
34455   
55676   
66677   
6888868 
6688886 
#>

(Get-Content -Path 'D:\Scripts\MyNumbersFile.txt' | 
ConvertFrom-Csv -Header MyNumber) -match '\d' 

# Results
<#
MyNumber
--------
34455   
55676   
66677   
6888868 
6688886 
#>

根据您和我的最后一条评论进行进一步更新。 使用 .Net RegEx 组匹配使用 Get-Content 时使用 -Raw

# This... 
[RegEx]::Matches((Get-Content -Path 'D:\Scripts\MyNumbersFile.txt'), '\d{5,7}').Value

# Or this...
[RegEx]::Matches((Get-Content -Path 'D:\Scripts\MyNumbersFile.txt' -Raw), '\d{5,7}').Value
# The end results are the same either way
<#
34455
55676
66677
6888868
6688886
#>

答案2

请尝试以下操作:

(Get-Content -Path 'C:\Path\to your\file.txt')  -replace "\D","" -replace "^\d{1,3}$","" -replace "^\d{8,}","" -match "\S"

相关内容