首页 > 解决方案 > 如何修改文件中一行的一部分?

问题描述

我有一个文件女巫包含多行字符串,如下所示:

DTSTART:20190716T180000

DTEND:20190716T180000

我想修改每个 DTEND 行。我想用 190000 替换 180000。DTEND: 和 180000 之间的部分每次都不同。有人现在如何更改 powershell 中的字符串吗?

标签: powershellicalendar

解决方案


这是完成这项工作的一种方法。[ 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

推荐阅读