powershell - 如何使用 PowerShell 脚本删除文本/日志文件的内容,直到第一次出现关键字
问题描述
如何使用 PowerShell 脚本删除所有上述行,直到出现在文本/日志文件中的关键字(第一次出现)?
例如,日志文件的内容是:
删除文件:localhost_access_log.2019-10-23.txt 删除文件:localhost_access_log.2019-10-24.txt 删除文件:localhost_access_log.2019-10-25.txt 删除文件:localhost_access_log.2019-10-26.txt 删除文件:localhost_access_log.2019-10-27.txt 删除文件:localhost_access_log.2019-10-28.txt 删除文件:localhost_access_log.2019-10-29.txt 删除文件:localhost_access_log.2019-10-30.txt 删除文件:localhost_access_log.2019-10-31.txt 删除文件:localhost_access_log.2019-11-01.txt 删除文件:localhost_access_log.2019-11-02.txt 删除文件:localhost_access_log.2019-11-03.txt 删除文件:localhost_access_log.2019-11-04.txt 删除文件:localhost_access_log.2019-11-05.txt 删除文件:localhost_access_log.2019-11-01.txt 删除文件:localhost_access_log.2019-11-02.txt
我选择关键字为“ 2019-11-01.txt ”
我想删除该关键字之前存在的所有行/内容。所以同一文件中的剩余文本是:
删除文件:localhost_access_log.2019-11-01.txt 删除文件:localhost_access_log.2019-11-02.txt 删除文件:localhost_access_log.2019-11-03.txt 删除文件:localhost_access_log.2019-11-04.txt 删除文件:localhost_access_log.2019-11-05.txt 删除文件:localhost_access_log.2019-11-01.txt 删除文件:localhost_access_log.2019-11-02.txt
我尝试了一些类似下面给出的 PowerShell 脚本,但它没有达到它的目标。它只是删除关键字所在的行。
$content = Get-Content $file
#$keyword = "2019-11-01.txt"
$content = $content.Where({ $_ -like $keyword }, 'SkipUntil') |
Set-Content $file -Force
解决方案
试试这个:
$logFile = 'C:\inet\logfiles\mylog.log'
$pattern = '*2019-11-01.txt*'
$match = $false
$fileHandle = [System.IO.File]::Create( $logFile + '.tmp' )
foreach($line in [System.IO.File]::ReadLines( $logFile )) {
if( $line -like $pattern ) {
$match = $true
}
if( $match ) {
$line += [environment]::NewLine
$fileHandle.Write([byte[]][char[]]$line, 0, $line.Length )
}
}
[void]$fileHandle.Close()
Move-Item -Path $logFile -Destination ($logFile + '.bak') # backup of old logfile
Move-Item -Path ( $logFile + '.tmp' ) -Destination $logFile
推荐阅读
- scala - Which option to choose for writing CSV file in Spark (HDFS)?
- php - Unable to figure it out this error. Message: Trying to get property of non-object
- ios - 如何快速提取 Json 数据
- qt - QLabel border visible within QGridLayout
- node.js - 与 async/await 一起使用时,如何从 Promise 中获得价值?
- html - Iterate an object using SMARTY?
- foreign-keys - 使用 Typeahead 创建 Alpacajs 文本字段,显示值和句柄 id(外键)
- css - Bootstrap 4 seems just let me margin-left, not MARGIN-RIGHT?
- python - 如何使用python每秒执行一个日志文件进程
- jenkins - curl 命令与 JSON API 一起使用时不呈现任何内容