PowerShell搜索和替换yaml
我正在寻找解决这个问题的方法 假设我们有两个文件,一个是yaml格式的,并且有特定的占位符,作为前成员的名称。请注意,由于文件格式为yaml,因此占位符前会有一定数量的空格 然后,我们有一个单独的文件,其中包含此格式的成员的实际名称–member_name:abc xyz。此文件没有其他空格 我需要的是,在不干扰文件结构的情况下,用第二个文件中的相应值替换yaml文件的内容占位符 与yaml一样,执行后的文件应具有成员名称:abc xyz,以及原始文件中的空格 这必须进入循环,因为我在文件A中有多个占位符,在第二个文件中有相应的值 如果我不清楚,请告诉我 这就是我尝试过的PowerShell搜索和替换yaml,powershell,Powershell,我正在寻找解决这个问题的方法 假设我们有两个文件,一个是yaml格式的,并且有特定的占位符,作为前成员的名称。请注意,由于文件格式为yaml,因此占位符前会有一定数量的空格 然后,我们有一个单独的文件,其中包含此格式的成员的实际名称–member_name:abc xyz。此文件没有其他空格 我需要的是,在不干扰文件结构的情况下,用第二个文件中的相应值替换yaml文件的内容占位符 与yaml一样,执行后的文件应具有成员名称:abc xyz,以及原始文件中的空格 这必须进入循环,因为我在文件A中有
$realmember = GC "\Path\to\file\realMember.txt"
$yamlfile = GC "\Path\to\file\yamlFile"
foreach($line in $yamlfile){
$script:found += @($line | select-string -Pattern '(*)$' | %{$_ -replace '(\s*','*'} | %{$_ -replace ')','*'})
}
for($i = 0; $i -lt ($realMember.Count); $i++){
if($realMember[$i] -like $found[$i].Trim()){
$secrets = $realMember[$i]
$file = $file -replace "[^\s*].*[^\s*]<*>$","$realMember[$i]" #| Where-Object {$_ -match "$realMember[$i]"}
}
}
$file
但这将以以下格式打印每个字段中的所有值。我需要找出是否有一种方法可以在替换正则表达式时包含变量,或者有其他更好的方法来实现这一点
MemberData:
member_id: 01
member_name_1: abc def member_name_2: ghi jkl member_name_3: mno pqr member_name_4: stu vwx[x]
member_id: 02
member_name_1: abc def member_name_2: ghi jkl member_name_3: mno pqr member_name_4: stu vwx[x]
new_members:
member_id: 003
member_name_1: abc def member_name_2: ghi jkl member_name_3: mno pqr member_name_4: stu vwx[x]
member_id: 004
member_name_1: abc def member_name_2: ghi jkl member_name_3: mno pqr member_name_4: stu vwx[x]
===========================
realMember.txt内容
===========================
纱线含量
任何寻找解决方案的人都可以在这里看到-您当前尝试的错误在哪里?您好,我已经给出了我尝试过的代码片段以及相关问题。没有任何错误,但它正在用一行中的所有标记替换占位符。我在这里寻找的是,它将取代占位符与确切的令牌匹配只。请帮忙
member_name_1: abc def
member_name_2: ghi jkl
member_name_3: mno pqr
member_name_4: stu vwx
MemberData:
member_id: 01
(member_name_1)
member_id: 02
(member_name_2)
new_members:
member_id: 003
(member_name_3)
member_id: 004
(member_name_4)