我的文件中的数据有问题。文本文件中的数据如下所示:
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
我的解决方案是:
第一列到达变量(与第二列相同的过程)并将两个变量合并为一个..但我不知道如何...
$ variabletxt = get-content C:\ Product.txt
$ firstcolumn = $ variablestxt.substring(1,10)
$ secondcolumn = $ variablestxt.substring(10)
$ final = ???
替换空格,但问题是product_code可能长1-10。
您对我如何解决此问题有任何建议吗?
答案 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() }