【问题标题】:powershell select-string output to filepowershell 选择字符串输出到文件
【发布时间】:2014-11-14 12:00:38
【问题描述】:

我正在使用 powershell 在 htm 文件中查找电子邮件地址并将其写入文本文件。 我正在使用 select-string 可以找到字符串 OK,但会将行号和电子邮件地址写入文件。

我想要的只是电子邮件地址!看起来很简单,但是我破解不了。

这是我的代码:

$List_htm = Get-ChildItem -Filter *.htm

# Loop:
foreach ($htm in $List_htm)
{
    # Locate recipient email address to send to:
    # Regex pattern to match:
    $pattern = '(^\W*.*@.*\.{1,}\w*$)'

    $sel = select-string -list $htm -pattern $pattern | Select-Object Line
    If ($Sel -eq $null)
{
    write-host "FAILS - $htm does NOT contain $pattern"
}
Else 
{
    write-host "WORKS! $pattern `n$sel"
} 

Write-host "end"

    $EmailAddressee = $PDFFolder + "EmailAddressee.txt"
    $sel | Out-File $EmailAddressee
}

但是 emailaddressee.txt 看起来像这样:

Line                                                                                                                                                                    
----                                                                                                                                                                    
                fred.bloggs@helpmeplease.com      

我想要的只是一个包含电子邮件地址的单行:

fred.bloggs@helpmeplease.com      

我显然可以在 powershell 中进一步处理这个结果文件来得到这个,但我希望有人能想出一个简单的单阶段结果。

谢谢

伊恩

【问题讨论】:

    标签: powershell


    【解决方案1】:

    更改以下行:

    $sel = select-string -list $htm -pattern $pattern | Select-Object Line
    

    收件人:

    $sel = select-string -list $htm -pattern $pattern | Select-Object -ExpandProperty Line
    

    这将确保您编写对象的属性而不是对象本身的文本表示

    【讨论】:

    • 太棒了!谢谢arco444。工作一种享受。我还添加了$sel = $sel.trim() 以删除前导空格并留下电子邮件地址。我还没有足够的声望点来支持你,但还是谢谢你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多