首页 > 解决方案 > 通过匹配行首的模式,使用 PowerShell 从 csv 文件中提取文本行

问题描述

我有一个 CSV 文件,我需要提取出现在行首的特定模式,例如:

文本行:

"555555","A",约翰"

这有效:

Get-Content $CsvFile | Select-String '^"555555"'

这不会:

$idnum = "555555"
Get-Content $CsvFile | Select-String '^"$idnum"'

将字符串分配给变量时如何提取行?

标签: regexpowershell

解决方案


powershell 中的单引号是文字。因此,在第二个中,您明确地希望匹配"$idnum"。因为您的数据中有双引号,所以您需要解决它们。

选项 您可以建立双引号来解决这个问题

Get-Content $CsvFile | Select-String "^""$idnum"""

或者您可以像这样格式化字符串替换:

Get-Content $CsvFile | Select-String ('^"{0}"' -f $idnum)

或者您可以更新 $idnum 以包含双引号,然后选择字符串调用更容易阅读

$idnum = '"555555"'
Get-Content $CsvFile | Select-String "^$idnum"

推荐阅读