各行の最初の2文字を置き換える必要があるファイルがあります。それは簡単ですが、最初の2文字 "| 0"はファイル内の他の場所に表示されます。だから私は置き換え文字列 "$ bp"を全部持ってしまった。単に各行の "| 0"の最初のインスタンスを置き換える方法はありますか?ここにサンプルデータがあります:ファイルの各行の最初の2文字をPowerShellで置き換えます。
0|Corrupt Record|0|0|0|0|0|0|0|0|0
各行の最初の2文字を置き換える必要があるファイルがあります。それは簡単ですが、最初の2文字 "| 0"はファイル内の他の場所に表示されます。だから私は置き換え文字列 "$ bp"を全部持ってしまった。単に各行の "| 0"の最初のインスタンスを置き換える方法はありますか?ここにサンプルデータがあります:ファイルの各行の最初の2文字をPowerShellで置き換えます。
0|Corrupt Record|0|0|0|0|0|0|0|0|0
私はこれを行うには他の方法があると確信していますが、ここに私のアプローチがあります。
"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)
質問を再読してください。 OPは、各行の '0 |'の最初の出現(変数 '$ bp'の値と明らかに置き換えます)を置き換えずに置き換えます。 –
(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"
ForEach-Objectはここでは必要ありません。 '-replace'演算子は、文字列配列と文字列配列の両方で動作します。 –
問題を示す例入力とサンプルコードを掲載することにより、あなたの質問を向上させてください。 –
'Get-Content"ファイルパス "| ForEach-Object {$ _ -replace "^ \ | 0"、 ""} |セットコンテンツ "ファイルパス"。 '^'は文字列の先頭を意味し、バックスラッシュは '|'をエスケープします。これは 'regex'の特殊文字です。 – sodawillow
@sodawillow '(Get-Content" filepath ")|同じファイルに書き込みたい場合は... 'を選択します。 –