我有一个问题,我需要删除第3列和第4列中的空格,这些空格可能使用powershell在管道分隔的文本文件中存在,也可能不存在。
输入文件如下所示:
COLMABQ1|02112017|001000 08248|BQ|Name| COLMABP1|02112017|00100009693|B P|Name| COLAL3|02112017|001000 12032|C D|Name| COLMAAO|02112017|00100014915|AO|Name| COLAL1H|02112017|00100 017939|C D|Name|
我需要输出文件如下所示:
COLMABQ1|02112017|00100008248|BQ|Name| COLMABP1|02112017|00100009693|BP|Name| COLAL3|02112017|00100012032|CD|Name| COLMAAO|02112017|00100014915|AO|Name| COLAL1H|02112017|00100017939|CD|Name|
到目前为止,我最近解决的问题是将文件转换为.csv文件,替换每个|使用“,”,对第3列和第3列运行下面的代码4然后将所有“,”改回|
jgitver.head_commit_datetime
即使这不能完全按照我的意愿行事,但我确信必须有一个更容易的方法来做到这一点......但谷歌的2天价值似乎暗示其他方式!
任何人都可以给予任何帮助,我会感激不尽,因为它让我疯了。
答案 0 :(得分:1)
一种可能性:
Get-Content $infile |
ForEach-Object {
$parts = $_.split("|")
$parts[2] = $parts[2].replace(" ","")
$parts[3] = $parts[3].replace(" ","")
$parts -join "|"
} | Add-Content $Outfile
答案 1 :(得分:0)
(Get-Content 'C:\Vincent imp\Test\Test.txt') -replace '(^.*\|.*\|.*) (.*\|.*\|.*\|)','$1$2' -replace '(^.*\|.*\|.*\|.*) (.*\|.*\|)','$1$2'
COLMABQ1|02112017|00100008248|BQ|Name|
COLMABP1|02112017|00100009693|BP|Name|
COLAL3|02112017|00100012032|CD|Name|
COLMAAO|02112017|00100014915|AO|Name|
COLAL1H|02112017|00100017939|CD|Name|
答案 2 :(得分:0)
如果只有第3列和第3列4有空格:
(Get-Content $infile) -replace '\s+' | Set-Content $infile