【发布时间】:2012-03-21 03:30:37
【问题描述】:
我手头有一个日志文件,如下所示: 0226 111641 (1911) 0 一些包含任何字母和标记的空格分隔消息
当需要排除故障时,我需要将其导入数据库,以便在其上使用过滤器。目前我认为 powershell 是实现这一目标的最佳选择,但我太绿了,不知道具体如何去做,所以它可以实际执行。我试着这样做:
$file = Get-Content "test.txt"
foreach ($line in $file)
{
#Write-Host $line
$a = $line
$month1 = $a[0..1]
$month2 = "$month1"
$month2 = $month2.ToString()
$month = $month2.Replace(" ", "")
$day1 = $a[2..3]
$day2 = "$day1"
$day2 = $day2.ToString()
$day = $day2.Replace(" ", "")
}
... 等等。之后将其插入数据库。但是,日志文件相当大(目前 3 周 15MB,预计几个月内会达到数百兆),并且脚本已经需要大约 4-5 分钟来处理它。 所以我需要的是从行的开头拆分四个空格分隔的列,将第一和第二转换为日期和时间并将它们与行的消息部分一起添加到数据库的方法。单独处理每个文本块似乎太耗时,例如excel可以在几秒钟内处理这个文件。是否有一些位置感知 csv-import 命令?
谢谢。
发现这个: Replace first two whitespace occurrences with a comma using sed 会有所帮助,如果我会使用 linux... :(
【问题讨论】:
-
发布原始文件示例和您想要实现的示例
-
哪些部分是什么?
0226是日期吗?111641时间?(1911) 0是什么?
标签: powershell