【问题标题】:PowerShell - Insert string in text file on the next line after another stringPowerShell - 在另一个字符串之后的下一行的文本文件中插入字符串
【发布时间】:2014-04-17 13:44:37
【问题描述】:

这看起来很简单,但我就是想不通/找到一篇文章来介绍它

我正在尝试使用 PowerShell 修改文本(配置)文件 查找特定字符串 (A) 出现的位置,然后将另一个字符串 (B) 添加到其后的下一行。保留字符串 (A) 出现的行

所以问题是我无法进行简单的查找和替换,因为字符串 (A) 出现的行后面有其他文本

希望比我更聪明的人知道诀窍。干杯

【问题讨论】:

标签: powershell


【解决方案1】:
# Let's say my file test.txt contains
# Line1
# Line2
# Line3
# Line4

$lines = Get-Content test.txt
$pos = [array]::indexof($lines, $lines -match "Line3") # Could use a regex here
$newLines = $lines[0..($pos -1)], "MyNewLine3", $lines[$pos..($lines.Length - 1)]

$newLines | Set-Content test.txt

【讨论】:

  • 请注意,如果它是一个正则表达式并且匹配更多元素,则索引返回 -1。在这种情况下,使用 ($lines -match "myregex")[0]
  • 还要注意,如果文件有空行并且调用不匹配任何行,则执行字符串匹配将返回第一个空行的索引。
  • @Santhos 为什么这是正则表达式而不是 powershell 内置函数匹配?也许在引擎盖后面是正则表达式。
  • 使用 newlines 构建字符串,所以 , 是字符串连接符?
  • @Timo 没错,在后台它是一个正则表达式。见docs.microsoft.com/en-us/powershell/module/…
猜你喜欢
  • 2015-04-04
  • 2015-02-11
  • 2021-08-03
  • 2016-10-09
  • 1970-01-01
  • 2020-08-30
  • 2022-01-08
  • 2019-03-21
  • 1970-01-01
相关资源
最近更新 更多