具有以下文本文件;
Powershell的新手,因此在这里需要指导。
输入TXT
membercode|id_number|passportnumber
BED_ODG0001|5007160081|
PF-000552516|7605430081|
PF-000704976|0385084|
PF-000678375||EP3800795
只需要ID_Number列,但是如果没有值,请将Passportnumber值移到该列中。
所需的输出TXT
5007160081
7605430081
0385084
EP3800795
答案 0 :(得分:1)
我对此感到无聊,所以你去:
看看Import-Csv cmdlet。
基本上,您输入的txt文件看起来像一个有效的CSV文件,包括字段标题,其中使用竖线符号|
分隔字段。
结合使用Import-Csv
和参数-Delimiter
,将数据加载为对象数组确实很容易。
文件中的每个字段都将在这些对象中表示为属性,这些属性具有文件头中定义的名称。
$inputFile = 'YOUR PATH AND FILENAME TO THE INPUT TXT FILE'
$outputFile = 'YOUR PATH AND FILENAME FOR THE OUTPUT TXT FILE'
# load the data from the CSV as an array of objects into a variable
$data = Import-Csv -Path $inputFile -Delimiter '|'
# loop through the elements of this array (the data rows in the file).
# inside the loop, the automatic variable '$_' is an object representing
# one element in the array (~~> row in the file)
$data | ForEach-Object {
# output the field 'id_number' or if that is not there, use the field 'passportnumber'
# and write it to the $outputFile file
if ($_.id_number) { $_.id_number } else { $_.passportnumber }
} | Set-Content -Path $outputFile
结果:
5007160081 7605430081 0385084 EP3800795