2016-11-23 57 views
1

比方說,我有$file,$key用於匹配,$string用於添加。 如果$file中有某行包含$key,則將$string添加到行尾。 例如: $key="b"$string="z" $file包含:如果行中包含字符串,則將內容添加到同一行

a 
b 
c 

$file包含:

a 
b z 
c 

我怎麼能做到這一點,在PowerShell中最簡單的方法是什麼? 注意! $file是一個實際的文件,而不是一些數組中的程序

回答

0

你可能不得不遍歷每一行,並檢查線路是否包含密鑰:

$newContent = Get-Content $file | Foreach { 
    if ($_ -like "*$key*") 
    { 
     "$_ $string" 
    } 
    else 
    { 
     $_ 
    } 
} 
$newContent | Set-Content $file 
+0

好了,如果有什麼'$文件'包含以下內容: '一個 BCDE F' ,我想加「Z」來結束包含'$關鍵=「b」' – igor

+1

我編輯我的問題,該行的不妨一試 –

0
$file="C:\temp\report.csv" 
$Newfile="C:\temp\report2.csv" 
$KeyToSearch="b" 
$StringToAdd="z" 

Get-Content $file | 
%{if ($_ -like "*$KeyToSearch*") {"$_ $StringToAdd" } else {$_}} | 
out-file -FilePath $Newfile -Append 
+0

THX ,使用「out-file ...」的區別是什麼?你說過,「設定內容......」並寫在答案之前? – igor

+0

沒有什麼不同,你可以使用2個解決方案;) – Esperento57

相關問題