regex - 通过匹配行首的模式,使用 PowerShell 从 csv 文件中提取文本行
问题描述
我有一个 CSV 文件,我需要提取出现在行首的特定模式,例如:
文本行:
"555555","A",约翰"
这有效:
Get-Content $CsvFile | Select-String '^"555555"'
这不会:
$idnum = "555555"
Get-Content $CsvFile | Select-String '^"$idnum"'
将字符串分配给变量时如何提取行?
解决方案
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"
推荐阅读
- r - 将两个数据集与 R 中的时间间隔条件相结合(我想避免组合并且只有唯一匹配)
- c# - CSVHelper:替换默认的 TypeConverter 会在读取时引发 TypeConverterException
- python - 链接到 Django 模板中的样式表
- html - 我已经建立了一个标志,但我的网站上有两个?
- sql - 在某些假设下选择连接的第一条和最后一条记录
- amazon-s3 - 无法验证以下目标配置(S3 到 SQS)
- reactjs - 如何在 API 调用中将输入值作为参数传递?
- php - 如何在 PHP 脚本中访问域路径之外的文件夹?
- reporting-services - 从现有 RDLC 文件创建 Windows 应用程序
- android - 显示图像和文本时如何调整 webview 的外观?