私の問題に対する次の解決策を求めてウェブを精査しました...現在、以下に示すように、いくつかの列に分割する必要があるcsv形式のテキストがあります
Task ID,Task Name,Project
2,2 - CR04AW212 Warehouse,2 Crown Castle International : 001586 2013 ALU Phase 3 Sprint Crown : 001623 CR04AW212 ALU Sprint
10,10 - CR04AW090 Tower Punch,24 Alcatel Lucent : 001713 2013 ALU AAV : 001752 CR04AW090 ALU AAV
そして、以下に示すように、テキストを引き離す複数の列に翻訳\ブレークダウンする必要があります
Task ID,Task Name,Customer ID,Customer Name,Parent Project ID,Parent Project Name,Child Project ID,Child Project Name
2,CR04AW212 Warehouse,2,Crown Castle International,001586,2013 ALU Phase 3 Sprint Crown 001623,CR04AW212 ALU Sprint
10,CR04AW090 Tower Punch,24,Alcatel Lucent,001713,2013 ALU AAV,001752,CR04AW090 ALU AAV
タスク ID 番号は、タスク名で再び繰り返されます。2番目の画像に示すように、名前からその番号を削除したいと思います
Project 列には、基本的に 6 つの列に分割するために必要なすべてのデータが含まれています。プログラムでテキストを選択する方法が必要だと思います。少しずつ入っていきます。「顧客 ID」列には、「プロジェクト列」の最初のスペースの前に数字が含まれている必要があります。これは、1 桁または 2 桁の数字で構成されます。関係なく、その番号は常に「プロジェクト」の最初の空白の前に存在する必要があります。明らかな初心者であるため、-splitパラメーターを使用してそれを達成できました
@{Name="Customer ID";Expression={($_.Project -split ' ')[0]}}.
ここで、最初のスペースの後、「:」の前に常に存在する次のテキスト「Customer Name」を選択する必要があります。
この例はあと 2 回続きます。「親プロジェクトID」と「子プロジェクトID」は6桁の固定数字です。各 ID に続くテキストは、そのプロジェクトの名前として表されます。
そして、これが私のグーグル検索が使い果たされた場所です
画像をアップロードしていないことをお詫びします。登録したばかりで、評判が十分になるまでStackOverflowは許可しません:)
編集: 最初の試合後に終了するにはどうすればよいですか?
Add-Member -PassThru NoteProperty 'Task Name' -Value ($_.'Task Name' -replace '\d+ - ')
現時点で私が持っていた場合
1,1 - JA03MR008 - Civil,9 New Tech Construction Corp. : 001583 2013 Panhandle : 001810 JA03MR008"
「タスク名」の最初の一致を削除したい場合、すべての一致が削除されます
タスク ID: 1
タスク名: JA03MRCivil
顧客 ID: 9
顧客名: New Tech Construction Corp.
親プロジェクト ID: 001583
親プロジェクト名: 2013 Panhandle
子プロジェクト ID: 001810
子プロジェクト名: JA03MR008
私はこのために REGEX の短期集中コースを受講しましたが、これが私の目的に最も適していると信じています。以下のコードを参照してください。それはうまくいくようです。このように使用する場合の注意点はありますか? 前もって感謝します
Add-Member -PassThru NoteProperty 'Task Name' -Value ($_.'Task Name' -replace '^([^-]*) - ')