【问题标题】:Replace text in first line of tab-delimited file using Powershell使用 Powershell 替换制表符分隔文件的第一行中的文本
【发布时间】:2015-10-02 21:50:14
【问题描述】:

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

$contents = Get-Content $PATH -Delimiter "`t"
$contents[1] = 'Replaced Text'
$contents | Out-File $PATH

我可以看到格式会混乱,但我不确定如何保持文件原样,只是更改我需要的内容。 另外,我想知道是否有一种有效的方法。因为我只关心文件的第一行。

我尝试了一种不同的方法,它“正常”,但在每行之后引入了额外的空白行:

$content = Get-Content $PATH -Delimiter "`n"
$content | 
  ForEach-Object { 
    if ($_.ReadCount -le 1) { 
      $_ -replace 'A','B' 
    } else { 
      $_ 
    } 
  } | 
  Set-Content $PATH

【问题讨论】:

  • 标题是第一行是吗?你要换的那条线呢。 A->B 还是替换整个标题?也不确定你的意思 我可以看到格式会混乱,

标签: powershell


【解决方案1】:

一个选项:

$content = {Get-Content $PATH}.Invoke() 
$content[0].Replace('A','B') | Set-Content $PATH
$content.RemoveAt(0)
$content | Add-Content $PATH

在脚本块上使用 .invoke() 会导致 Get-Content 返回集合而不是数组,这简化了删除第一个元素的过程。

【讨论】:

    猜你喜欢
    • 2013-01-08
    • 2021-04-29
    • 2020-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-06
    • 2011-11-21
    • 1970-01-01
    相关资源
    最近更新 更多