powershell - Powershell:逐行读取文本文件并在“|”上拆分
问题描述
我无法使用“|”将一行拆分为一个数组 在文本文件中并按一定顺序重新组装它。与文本文件中的原始行一样,有多行。
这是原始行:
80055555|Lastname|Firstname|AidYear|DCDOCS|D:\BDMS_UPLOAD\800123456_11-13-2018 14-35-53 PM_1.pdf
我需要它看起来像这样:
80055555|DCDOCS|Lastname|Firstname|AidYear|D:\BDMS_UPLOAD\800123456_11-13-2018 14-35-53 PM_1.pdf
这是我正在使用的代码:
$File = 'c:\Names\Complete\complete.txt'
$Arr = $File -split '|'
foreach ($line in Get-Content $File)
{
$outputline = $Arr[0] + "|" + $Arr[4] + "|" + $Arr[1] + "|" + $Arr[2] + "|" +
"@@" + $Arr[5] |
Out-File -filepath "C:\Names\Complete\index.txt" -Encoding "ascii" -append
}
解决方案
您需要自己处理文件的每一行,然后拆分它们。
$File = get-content "D:\test\1234.txt"
foreach ($line in $File){
$Arr = $line.Split('|')
[array]$OutputFile += $Arr[0] + "|" + $Arr[4] + "|" + $Arr[1] + "|" + $Arr[2] + "|" + "@@" + $Arr[5]
}
$OutputFile | out-file -filepath "D:\test\4321.txt" -Encoding "ascii" -append
编辑:感谢 LotPings 基于-join
和避免+=
构建数组的替代建议(这是低效的,因为它在每次迭代时重建数组):
$File = get-content "D:\test\1234.txt"
$OutputFile = foreach($line in $File){($line.split('|'))[0,4,1,2,3,5] -Join '|'}
$OutputFile | out-file -filepath "D:\test\4321.txt" -Encoding "ascii"
推荐阅读
- java - IBM MQ 云连接
- sass - 无法在 Gatsby SCSS 中导入 Google 字体
- python - 从字符串列表中删除子字符串
- c - 为什么文本段在这个 ELF 文件中没有可执行权限?
- java - 没有将图像 URL 字符串获取到 FirebaseDatabase
- r - 通过评估多个列创建一个新列
- assembly - 将 64 位 NASM 与 MinGW-64 链接会导致“文件格式无法识别”错误
- javascript - 无法将菜单从 php json 文件输出到 html
- node.js - 如何在 Node.js 中传输另一个 ejs 文件
- json - Jolt如何进行这种转换?连接并设置在数组中