Powershell:使用从正则表达式哈希表检索到的值添加列
我是Powershell的新手,我正在尝试基于特定列向csv文件添加一列,以及另一个包含正则表达式列表和关联值的csv文件 阅读许多关于导入Csv和选择对象的帖子,我可以做一些改进 第一个匹配值应用于填充新列,在本场景中称为“preference” 输入 data.csv regex.csv 使用单个正则表达式输出:OK 第一次尝试.ps1 第一次尝试输出.csv 使用多个正则表达式输出:卡滞 预期的_result.txt 我如何修改上面的代码,以便能够迭代regex_键并获得预期的结果Powershell:使用从正则表达式哈希表检索到的值添加列,powershell,csv,Powershell,Csv,我是Powershell的新手,我正在尝试基于特定列向csv文件添加一列,以及另一个包含正则表达式列表和关联值的csv文件 阅读许多关于导入Csv和选择对象的帖子,我可以做一些改进 第一个匹配值应用于填充新列,在本场景中称为“preference” 输入 data.csv regex.csv 使用单个正则表达式输出:OK 第一次尝试.ps1 第一次尝试输出.csv 使用多个正则表达式输出:卡滞 预期的_result.txt 我如何修改上面的代码,以便能够迭代regex_键并获得预期的结果 非常感
非常感谢您的帮助。我将使用
foreach
迭代模式(不使用foreach对象
不覆盖$\ucode>,但您可以修改以匹配您的首选项):
$data=Import Csv.\data.Csv-分隔符“;”
$patterns=导入Csv。\regex.Csv-分隔符“;”
$data |选择对象*,@{Name='preference';表达式={
foreach($p,以$patterns表示){
if($\u.name-匹配$p.'regex\u key'){
$p.优惠
打破
}
}
}}
在if
中,如果检测到任何匹配,我将使用break
停止循环执行
id name first_name
-- ---- ----------
35 ALPHA UNIFORM
48 BRAVO VICTOR
39 CHARLIE WHISKEY
42 DELTA X-RAY
59 ECHO YANKEE
64 FOXTROT ZULU
regex_key preference
--------- -----
LP MUSIC
VO VSOP
CH CHORIZO
.* OTHER
$single_preference = Import-Csv .\data.csv |`
Select-Object *,
@{Name='preference';
Expression={if($_.name -match "CH"){"CHORIZO"} else {"OTHER"}}
} |`
Export-Csv -Path ".\first_attempt_output.csv" -NoTypeInformation
id name first_name preference
-- ---- ---------- ----------
35 ALPHA UNIFORM OTHER
48 BRAVO VICTOR OTHER
39 CHARLIE WHISKEY CHORIZO
42 DELTA X-RAY OTHER
59 ECHO YANKEE CHORIZO
64 FOXTROT ZULU OTHER
id name first_name preference
-- ---- ---------- ----------
35 ALPHA UNIFORM MUSIC
48 BRAVO VICTOR VSOP
39 CHARLIE WHISKEY CHORIZO
42 DELTA X-RAY OTHER
59 ECHO YANKEE CHORIZO
64 FOXTROT ZULU OTHER