2017-08-03 83 views
0

我想操縱輸出到適當的列,以便以後可以在Excel中打開文件。基本上通過複製輸出並將其粘貼到具有分隔符選項(導入嚮導)的Excel中。操縱選擇字符串對象的輸出

的SourceFile:A.TXT
https://rent.com

代碼

[email protected]("rent.com") 
$files=Get-ChildItem "D:\test\*.*" -Recurse 
$files |Select-String -Pattern $pat |Out-File "D:\output\result.txt" 

但輸出我得到的是:

D:\test\a.txt:1:https://rent.com 

如何操作的輸出,使我得到:

D:\test\a.txt~1~https://rent.com 

然後我可以使用〜作爲分隔符並導入到Excel中。

感謝您的幫助!

回答

0

如何:

[email protected]("rent.com") 
$files=Get-ChildItem "D:\test*.*" -Recurse 
$files | 
    Select-String -Pattern $pat | 
    %{ "{0}~{1}~{2}" -f $_.Path, $_.LineNumber, $_.Line } | 
    Out-File "D:\output\result.txt" 

Try it online

參考文獻:

Select-String Outputs

+0

感謝道格,但問題是我可以在文本文件本身中有':'。 以上命令會導致 D〜\ test \ a.txt〜1〜https〜// rent.com – HungryProgrammer

+0

我相應地更新了我的答案...... –

+0

Hi Doug,對於$ _。Line列,有沒有我可以得到匹配的價值而不是整條線;所以輸出將是D:\ test \ a.txt:1:rent.com,試圖查看匹配參數。 – HungryProgrammer

0

其他方法:

[email protected]("tec") 
$files=Get-ChildItem "D:\test*.*" -Recurse -file 
$files | Select-String -Pattern $pat | %{$_.ToString().Replace(':', '~')} | Out-File "D:\output\result.txt" 
+0

我起初有同樣的解決方案,但它不起作用,因爲文件名和結果都有一個':'不應該用'〜'代替。 –