Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
剥除ID/Passport No';所需的Powershell命令;从以列分隔的文本文件中删除_Powershell - Fatal编程技术网

剥除ID/Passport No';所需的Powershell命令;从以列分隔的文本文件中删除

剥除ID/Passport No';所需的Powershell命令;从以列分隔的文本文件中删除,powershell,Powershell,具有如下所示的文本文件 Powershell新手,因此此处需要指导 输入文本 membercode|id_number|passportnumber BED_ODG0001|5007160081| PF-000552516|7605430081| PF-000704976|0385084| PF-000678375||EP3800795 只需要ID_Number列,但如果没有值,请将Passportnumber值移到该列中 所需输出文本 5007160081 7605430081 038508

具有如下所示的文本文件

Powershell新手,因此此处需要指导

输入文本

membercode|id_number|passportnumber
BED_ODG0001|5007160081|
PF-000552516|7605430081|
PF-000704976|0385084|
PF-000678375||EP3800795
只需要ID_Number列,但如果没有值,请将Passportnumber值移到该列中

所需输出文本

5007160081
7605430081
0385084
EP3800795

我等这个有点无聊,所以给你:

请查看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
结果:


你尝试过什么,你尝试过的又是如何失败的?理想情况下,您应该提供您尝试过的内容的详细信息,并包括关于失败原因的具体信息,以及错误消息和/或错误输出。不是代码编写服务;最好的问题是那些提供有用信息的问题,这样那些回答问题的人可以引导你设计出自己的正确答案。请看一个好问题。说到上面,我建议您注意cmdlet(从PowerShell 3.0开始提供),并特别注意
-Delimiter
参数。我非常感谢它能够完美地工作。我无法回答之前关于我尝试了什么的问题(在南非的长周末)。基本上,我运行的是powershell命令,运行一个VBS脚本,将文件导入Excel,运行一个宏来修剪文件,然后导出为txt。然后我运行另一个powershell进行修剪,因为txt文件在每行的末尾都有空格,这实际上将所有这些步骤固定为一个。我真的很感激。非常感谢。
5007160081
7605430081
0385084
EP3800795