各位前輩好,
小弟有個批次檔問題想和前輩們請教,主要是針對文字檔想進行處理。
再請各位前輩指點指點小弟了,謝謝
有一個Log.txt,內文如下:
A0100003,陳小明,,AAA,2011-08-20,18:21:52,ss
A0100006,吳小明,,BBB,2011-08-20,18:21:52,ss
…
希望將日期與時間合併,變成下方檔案,輸出為Result.txt
A0100003,陳小明,,AAA,2011-08-20 18:21:52,ss
A0100006,吳小明,,BBB,2011-08-20 18:21:52,ss
…
感謝各位前輩大大們幫忙
有最佳解了,小弟在此拜謝。
使用 Powershell:
(gc Log.txt) -replace "(\d{4}-\d{2}-\d{2}),(\d{2}:\d{2}:\d{2})",'$1 $2' | Out-File "Result.txt"
(gc Log.txt) -replace "(\d{4}-\d{2}-\d{2}),(\d{2}:\d{2}:\d{2})",'$1 $2' | Out-File "Result.csv"
大大早安,再多請教一個問題,如果轉成csv後,用excel開啟後沒有分欄,這個該如何解決?
excel默認的分欄符號是tab,你要在Result.csv裏面的第一行告訴它分欄符號是comma。
sep=,
A0100003,陳小明,,AAA,2011-08-20 18:21:52,ss
A0100006,吳小明,,BBB,2011-08-20 18:21:52,ss
或者將powershell script改為
@("sep=,") + (gc Log.txt) -replace "(\d{4}-\d{2}-\d{2}),(\d{2}:\d{2}:\d{2})",'$1 $2' | sc "Result.csv"
解法1: Powershell:
(gc Log.txt).Replace("0,1","0 1") | Out-File Result.txt
解法2:Powershell
以下另存為 go.ps1 用Powershell執行即可.
原理為,取前段+空格+後段
$data = Get-Content "Log.txt"
foreach($line in $data)
{
$line.remove(28,13)+" "+$line.Substring(29) |ac Result.txt
}
#前段取到第28碼,其餘13碼去除
#後段只留第29碼之後