使用Powershell替换制表符分隔文件第一行中的文本
我有一个以制表符分隔的文件,它有10k+行。我需要将第一条(标题)记录的特定字段更改为特定值。。 我正在使用下面的脚本,但它弄乱了格式使用Powershell替换制表符分隔文件第一行中的文本,powershell,Powershell,我有一个以制表符分隔的文件,它有10k+行。我需要将第一条(标题)记录的特定字段更改为特定值。。 我正在使用下面的脚本,但它弄乱了格式 $contents = Get-Content $PATH -Delimiter "`t" $contents[1] = 'Replaced Text' $contents | Out-File $PATH 我可以看到格式将混乱,但我不知道如何保持文件的原样,只是改变我需要的。 另外,我想知道是否有一种有效的方法。。因为我只关心文件的第一行 我尝试了一种不同的
$contents = Get-Content $PATH -Delimiter "`t"
$contents[1] = 'Replaced Text'
$contents | Out-File $PATH
我可以看到格式将混乱,但我不知道如何保持文件的原样,只是改变我需要的。
另外,我想知道是否有一种有效的方法。。因为我只关心文件的第一行
我尝试了一种不同的方法,它的工作原理是“ok”,但在每行后面都会引入额外的空行:
$content = Get-Content $PATH -Delimiter "`n"
$content |
ForEach-Object {
if ($_.ReadCount -le 1) {
$_ -replace 'A','B'
} else {
$_
}
} |
Set-Content $PATH
一种选择:
$content = {Get-Content $PATH}.Invoke()
$content[0].Replace('A','B') | Set-Content $PATH
$content.RemoveAt(0)
$content | Add-Content $PATH
在脚本块上使用。
invoke()
会导致Get Content
返回集合而不是数组,这简化了删除第一个元素的过程。头是第一行是吗?你要换的线路怎么样。A->B或更换整个收割台?我也不知道你说的是什么意思我可以看出格式会搞砸,