1

オブジェクトで使用できるさまざまなメソッドを一度に使用して、変数を割り当てたいと思います。この機能がpowershellに存在するかどうかはわかりませんが、機能するようにするための長い道のりは次のとおりです。

function myFunction() {
   $createArray = @(Get-Content $aFile)
   $arrayWithoutCharacters = $createArray.replace('-', '')

   return $arrayWithoutCharacters
}

代わりに、私はやりたい:

$createArray = @(Get-Content $aFile::replace('-', ''))

しかし、なぜこれが機能しないのかを知るには、powershell について十分な知識がありません。

サンプル入力:

f1d06a1b-0470-44f1-895c-be1fd8b92e1c
75417fc3-afce-4b30-ab24-d306540c4020
2b0b2515-192d-470a-9745-4a3fb7c0203a
5498abad-2816-4d28-92cc-c08a3dfce8e6
1c2a95a3-2f44-432b-a276-ea23ece8a351
e58eeb44-4119-477f-b192-bf272054c69e
79f342ab-66e7-42a7-8315-2677f99f20c5
df2af860-52cd-48e6-aaf5-579b2455276a
92f745a2-c314-4a42-998c-dd611478b9b3
c971a1b2-937d-4e35-bea6-1cde18e9450a
fe3053c7-cc35-4e94-b176-1e2a8e9c8c14
fc3856b2-d22f-4255-a4e6-c11f508c3b99
d88e7175-ba36-4179-8589-13080120e49a
98c62b24-a3dd-4843-ad1a-e08d95624f00
bee25d62-3828-44ef-9b60-502dc4f14c2b
b889c381-b194-434f-9af8-3626b4186601
0a3f2663-1b7e-48f1-854d-f62c5469434b

私が望むサンプル出力:

f1d06a1b047044f1895cbe1fd8b92e1c
75417fc3afce4b30ab24d306540c4020
2b0b2515192d470a97454a3fb7c0203a
5498abad28164d2892ccc08a3dfce8e6
1c2a95a32f44432ba276ea23ece8a351
e58eeb444119477fb192bf272054c69e
79f342ab66e742a783152677f99f20c5
df2af86052cd48e6aaf5579b2455276a
92f745a2c3144a42998cdd611478b9b3
c971a1b2937d4e35bea61cde18e9450a
fe3053c7cc354e94b1761e2a8e9c8c14
fc3856b2d22f4255a4e6c11f508c3b99
d88e7175ba364179858913080120e49a
98c62b24a3dd4843ad1ae08d95624f00
bee25d62382844ef9b60502dc4f14c2b
b889c381b194434f9af83626b4186601
0a3f26631b7e48f1854df62c5469434b
4

3 に答える 3

2

編集:更新とその他の回答を見ました。@Hyper Anthonyが私を打ち負かしたように見えますが...

これは、あなたがやろうとしていることでうまくいくはずです:

$createArray = Get-Content $aFile | foreach {$_.Replace('-','')}

または、より具体的には、提供されたサンプル データが与えられた場合、このスクリプトは次のようになります。

$aFile = "C:\path\to\your\file\replace_test.txt"

$createArray = Get-Content $aFile | foreach {$_.Replace('-','')}

$createArray

次の出力が生成されます。

f1d06a1b047044f1895cbe1fd8b92e1c
75417fc3afce4b30ab24d306540c4020
2b0b2515192d470a97454a3fb7c0203a
5498abad28164d2892ccc08a3dfce8e6
...
于 2013-09-19T17:24:03.070 に答える
2

これにより、文字列のコレクションが作成されます (文字列は からの入力であり、ダッシュ文字が置き換えられる場所にパイプラインを介してGet-Content一度に 1 つずつ送信されます。Foreach-Object

$createArray = @(Get-Content $aFile | Foreach-Object { $_ -replace "-", "" })

これを明示的な配列でラップすることは重要です。これは、返されるオブジェクト タイプの一貫性が必要だからです。これは常に を返す必要がありObject[]ます。そのラッピングがなければ、0 行または 1 行の長さの $aFile は単純にstring.


コードをできるだけ短くしたい場合は、一部のコマンドレットをエイリアスに置き換えることができます。

$createArray = @(gc $aFile | % { $_ -replace "-", "" })

しかし、特に他の人がそれらを読んで使用する場合は、スクリプトでその習慣を作ることはお勧めしません (最も一般的なエイリアスを超えて...たとえば、 Foreach-Object は通常 or に置き換えられforeachます)。%コマンドレットの名前とは対照的に、難解なエイリアスに遭遇すると、スクリプトが読みにくくなります。

于 2013-09-19T16:54:50.603 に答える
1

これを試して:

$createArray = $(@(Get-Content $aFile)).replace('-', '')
于 2013-09-19T15:57:12.100 に答える