Powershell:匹配一个文件中的一行文本并添加到另一个文件中
Powershell: Matching a line of text from one file and adding into another file
我有一个非常大的日志文件。它包含多个日期的日志数据。每行都以日期开头(yyyy-dd-mm hh:mm:ss 等)。
因此,日志如下所示:
2016-02-17 10:15:24 some text that follows
2016-02-17 14:21:46 more text that follows
2016-02-19 11:54:11 other text that follows
2016-02-19 16:37:21 more text that follows
2016-02-19 19:52:17 other text that follows
2016-02-22 06:01:32 more text that follows
等...
我正在尝试编写一个 PowerShell 脚本,它将:
- 阅读我文件的每一行
- 确定日期(前 10 个字符)
- 将此行添加到名称为
targetfile-yyyy-mm-dd.log
的另一个文件中
我对这个问题的第一次尝试是遍历文件中的整个日期范围,并为每个日期从上到下解析整个文件。这需要多次遍历整个文件(40GB!),这需要几天时间。
我理想的解决方案是逐行检查文件一次,然后根据行中的前十个字符将每一行复制到相应的目标文件中。
我该怎么做才能使其最有效?谢谢你的想法!
试试这个:
# Use StreamReader to read line by line the Log $file
$streamReader = New-Object System.IO.StreamReader -Arg "$file"
while($line = $streamReader.ReadLine()){
# Get the first 10 char to generate the $targetfile
$tagetfile = "target-file-$($line.Substring(0,10)).log"
# Add-Content of the $line value, skipping the first 20 char (Date)
$line.Substring(20) | Add-Content $tagetfile
}
我有一个非常大的日志文件。它包含多个日期的日志数据。每行都以日期开头(yyyy-dd-mm hh:mm:ss 等)。
因此,日志如下所示:
2016-02-17 10:15:24 some text that follows
2016-02-17 14:21:46 more text that follows
2016-02-19 11:54:11 other text that follows
2016-02-19 16:37:21 more text that follows
2016-02-19 19:52:17 other text that follows
2016-02-22 06:01:32 more text that follows
等...
我正在尝试编写一个 PowerShell 脚本,它将:
- 阅读我文件的每一行
- 确定日期(前 10 个字符)
- 将此行添加到名称为
targetfile-yyyy-mm-dd.log
的另一个文件中
我对这个问题的第一次尝试是遍历文件中的整个日期范围,并为每个日期从上到下解析整个文件。这需要多次遍历整个文件(40GB!),这需要几天时间。
我理想的解决方案是逐行检查文件一次,然后根据行中的前十个字符将每一行复制到相应的目标文件中。
我该怎么做才能使其最有效?谢谢你的想法!
试试这个:
# Use StreamReader to read line by line the Log $file
$streamReader = New-Object System.IO.StreamReader -Arg "$file"
while($line = $streamReader.ReadLine()){
# Get the first 10 char to generate the $targetfile
$tagetfile = "target-file-$($line.Substring(0,10)).log"
# Add-Content of the $line value, skipping the first 20 char (Date)
$line.Substring(20) | Add-Content $tagetfile
}