删除powershell中管道分隔文件中列中的空格

时间:2017-11-08 15:18:15

标签: powershell

我有一个问题,我需要删除第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天价值似乎暗示其他方式!

任何人都可以给予任何帮助,我会感激不尽,因为它让我疯了。

3 个答案:

答案 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