如何将值放入txt文件(文件包含空格)?电源外壳

时间:2013-01-27 11:18:36

标签: powershell

我的文件中的数据有问题。文本文件中的数据如下所示:

ADSE64E...Mobile phone.....................                           
EDW8......Unknown item.....................                           
CAR12.....Peugeot 206 with red colour......            
GJ........Parker model 2...................                         
Por887W8..Black coffe from Peru............  

圆点代表空格。第一列是Product_Code(长1-10),第二列(长1-255)是Description。我只需要:

ADSE64E;Mobile phone                           
EDW8;Unknown item                          
CAR12;Peugeot 206 with red colour           
GJ;Parker model 2.                         
Por887W8;Black coffe from Peru 

我的解决方案是:

  1. 第一列到达变量(与第二列相同的过程)并将两个变量合并为一个..但我不知道如何...

    $ variabletxt = get-content C:\ Product.txt

    $ firstcolumn = $ variablestxt.substring(1,10)

    $ secondcolumn = $ variablestxt.substring(10)

    $ final = ???

  2. 替换空格,但问题是product_code可能长1-10。

  3. 您对我如何解决此问题有任何建议吗?

2 个答案:

答案 0 :(得分:1)

拆分你的刺痛然后用什么都不用替换“多个空间”:

gc file.txt |%{
($_.substring(0,9)  -replace "[ ]{2,}","")+";"+($_.substring(10,254)  -replace "[ ]{2,}","")+";"
}

答案 1 :(得分:1)

使用TrimEnd方法删除尾随点并替换剩下的那些。

Get-Content C:\Product.txt | 
Foreach-Object { $_.TrimEnd() -replace '^([^\s]+)(\s+)(.+)$','$1;$3'}

ADSE64E;Mobile phone
EDW8;Unknown item
CAR12;Peugeot 206 with red colour
GJ;Parker model 2
Por887W8;Black coffe from Peru

Per @Kayasax评论(谢谢!),如果代码长度为10个字符,则第一列和第二列之间将没有空格,因此使用它可能更安全:

Get-Content C:\Product.txt | 
Foreach-Object { '{0};{1}' -f $_.Substring(0,10).Trim(), $_.Substring(10).Trim() }