2017-01-03 21 views
-3

各行の最初の2文字を置き換える必要があるファイルがあります。それは簡単ですが、最初の2文字 "| 0"はファイル内の他の場所に表示されます。だから私は置き換え文字列 "$ bp"を全部持ってしまった。単に各行の "| 0"の最初のインスタンスを置き換える方法はありますか?ここにサンプルデータがあります:ファイルの各行の最初の2文字をPowerShellで置き換えます。

0|Corrupt Record|0|0|0|0|0|0|0|0|0 
+3

問題を示す例入力とサンプルコードを掲載することにより、あなたの質問を向上させてください。 –

+1

'Get-Content"ファイルパス "| ForEach-Object {$ _ -replace "^ \ | 0"、 ""} |セットコンテンツ "ファイルパス"。 '^'は文字列の先頭を意味し、バックスラッシュは '|'をエスケープします。これは 'regex'の特殊文字です。 – sodawillow

+1

@sodawillow '(Get-Content" filepath ")|同じファイルに書き込みたい場合は... 'を選択します。 –

答えて

-1

私はこれを行うには他の方法があると確信していますが、ここに私のアプローチがあります。

"0 |"の最初のオカレンスだけを置き換えるには、あなたはそれを置き換えることができる残りの滞在を持っている。

$CorruptString = "0|Corrupt Record|0|0|0|0|0|0|0|0|0" 
[regex]$ToReplace = "0\|" 
$ToReplace.replace($CorruptString, "", 1) 

この意志出力:

破損録音|交換するだけの簡単な正規表現0

| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0破損した文字列を置き換え、何も置き換えないか、置き換えたい文字列で置き換えます。当然、1は1回だけです。

私はそれがあなたが探していたものだと信じています。もっと説明しようとしない場合。

編集:投稿と多少の混乱があったため。文字列の最初の2文字を置き換えるには、部分文字列を使って最初の2文字を削除します。あなたの質問は不明である

"0|Corrupt Record|0|0|0|0|0|0|0|0|0".Substring(2) 
+0

質問を再読してください。 OPは、各行の '0 |'の最初の出現(変数 '$ bp'の値と明らかに置き換えます)を置き換えずに置き換えます。 –

1

0||0)。

場合は、彼らが0|ある各行の2つの最初の文字を置き換えるために、このスニペットを使用することができます。

$oldContent = Get-Content "my/file" 

$newContent = $OldContent | ForEach-Object { $_ -replace "^0\|","newstring" } 
# simpler 
#$newContent = $OldContent -replace "^0\|","newstring" 

$newContent | Set-Content "my/file" 
+1

ForEach-Objectはここでは必要ありません。 '-replace'演算子は、文字列配列と文字列配列の両方で動作します。 –

関連する問題