如何修改文件中一行的一部分?
How can i modify part of a row in file?
我有一个文件 包含多行,字符串如下:
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
我有一个文件 包含多行,字符串如下:
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