Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Powershell替换制表符分隔文件第一行中的文本_Powershell - Fatal编程技术网

使用Powershell替换制表符分隔文件第一行中的文本

使用Powershell替换制表符分隔文件第一行中的文本,powershell,Powershell,我有一个以制表符分隔的文件,它有10k+行。我需要将第一条(标题)记录的特定字段更改为特定值。。 我正在使用下面的脚本,但它弄乱了格式 $contents = Get-Content $PATH -Delimiter "`t" $contents[1] = 'Replaced Text' $contents | Out-File $PATH 我可以看到格式将混乱,但我不知道如何保持文件的原样,只是改变我需要的。 另外,我想知道是否有一种有效的方法。。因为我只关心文件的第一行 我尝试了一种不同的

我有一个以制表符分隔的文件,它有10k+行。我需要将第一条(标题)记录的特定字段更改为特定值。。 我正在使用下面的脚本,但它弄乱了格式

$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或更换整个收割台?我也不知道你说的是什么意思我可以看出格式会搞砸,