iT邦幫忙

2

批次檔 如何處理 TXT 內的某一段文字?

各位前輩好,
小弟有個批次檔問題想和前輩們請教,主要是針對文字檔想進行處理。
再請各位前輩指點指點小弟了,謝謝

有一個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

感謝各位前輩大大們幫忙
有最佳解了,小弟在此拜謝。

上下都一樣,看不懂你的需求是甚麼
froce iT邦大師 4 級 ‧ 2018-08-21 15:08:28 檢舉
他原本日期欄位和時間欄位是分開的,現在想要合起來。

2 個回答

1
marlin12
iT邦新手 2 級 ‧ 2018-08-21 18:06:39
最佳解答

使用 Powershell:

(gc Log.txt) -replace "(\d{4}-\d{2}-\d{2}),(\d{2}:\d{2}:\d{2})",'$1 $2' |  Out-File "Result.txt"
nrsjdje iT邦新手 5 級 ‧ 2018-08-22 10:26:29 檢舉
(gc Log.txt) -replace "(\d{4}-\d{2}-\d{2}),(\d{2}:\d{2}:\d{2})",'$1 $2' |  Out-File "Result.csv"

大大早安,再多請教一個問題,如果轉成csv後,用excel開啟後沒有分欄,這個該如何解決?

marlin12 iT邦新手 2 級 ‧ 2018-08-23 18:40:27 檢舉

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"
2
jeles51
iT邦新手 1 級 ‧ 2018-08-21 15:10:00

解法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碼之後
看更多先前的回應...收起先前的回應...
Homura iT邦高手 1 級 ‧ 2018-08-21 15:37:44 檢舉

ps真簡潔/images/emoticon/emoticon12.gif

問題是它不一定是"0,1"吧
/images/emoticon/emoticon10.gif

jeles51 iT邦新手 1 級 ‧ 2018-08-21 16:12:08 檢舉

其它等高手繼續處理...XD

那就 「,00:」~「,23:」取代成「 00:」~「 23:」
幸好只有24小時。

我要發表回答

立即登入回答