powershell - 如何修改文件中一行的一部分?
问题描述
我有一个文件女巫包含多行字符串,如下所示:
DTSTART:20190716T180000
DTEND:20190716T180000
我想修改每个 DTEND 行。我想用 190000 替换 180000。DTEND: 和 180000 之间的部分每次都不同。有人现在如何更改 powershell 中的字符串吗?
解决方案
这是完成这项工作的一种方法。[ grin ] 它找到以 开头的行,DTEND
获取时间戳,将其转换为[datetime]
对象,增加一小时,将其重新格式化为与原始布局相同的布局,构建新行,然后将其输出到$Results
集合中。
可以根据需要将集合发送到文件或屏幕。
# fake reading in a text file
# in real life, use Get-Content
$InStuff = @'
DTSTART:20190716T180000
DTEND:20190716T180000
'@ -split [System.Environment]::NewLine
$Marker = 'DTEND'
$HoursToAdd = 1
$Results = foreach ($IS_Item in $InStuff)
{
if ($IS_Item -match "^$Marker")
{
$Prefix, $OldTimeStamp = $IS_Item.Split(':')
$NewTimeStamp = [datetime]::ParseExact($OldTimeStamp, 'yyyyMMddTHHmmssss', $Null).
AddHours($HoursToAdd).
ToString('yyyyMMddTHHmmssss')
($Prefix, $NewTimeStamp) -join ':'
}
else
{
$IS_Item
}
}
$Results
输出 ...
DTSTART:20190716T180000
DTEND:20190716T190000
推荐阅读
- javascript - 以模态显示表单的 POST 数据
- fullcalendar - FullCalendar 每周活动限制
- python-3.x - AWS SageMaker:ValueError:y 中人口最少的类只有 1 个成员错误
- r - 下标和上标的 Markdown 代码
- mongodb - mongodb - $sort 仅子文档
- java - 执行目标 org.apache.maven.plugins:maven-resources-plugin:2.6:resources 的默认资源失败
- node.js - 为什么热重载不适用于 reactjs visual studio 2019 模板
- regex - 如何从字符串中提取所有 IMDb ID
- emscripten - 调用 EM_JS 函数时出现意外数量的参数
- android - OSMDroid 设置点击 CompassOverlay