如果有一个文件,例如test.config,该文件包含第140行和第170行之间的工作“WARN”,还有其他“WARN”字在其中的行,但我想用字“DEBUG”替换第140行和第170行之间的“WARN”,并保留文件的其余文本相同,保存时只在第140行和第170行之间将“WARN”替换为“DEBUG”。剩下的所有文字都不受影响。使用powershell替换文件的指定行号
5
A
回答
0
这是测试文件
text
text
DEBUG
DEBUG
TEXT
-
PS:\ gc .\stuff1.txt |% { [system.text.regularexpressions.regex]::replace($_,"WARN","DEBUG") } > out.txt
Out.txt这个样子
文本 文本 DEBUG
DEBUG
TEXT
6
看看$_.ReadCount
这将有所帮助。就像我只是替换10-15行一样。
$content = Get-Content c:\test.txt
$content |
ForEach-Object {
if ($_.ReadCount -ge 10 -and $_.ReadCount -le 15) {
$_ -replace '\w+','replaced'
} else {
$_
}
} |
Set-Content c:\test.txt
之后,该文件将包含:
1
2
3
4
5
6
7
8
9
replaced
replaced
replaced
replaced
replaced
replaced
16
17
18
19
20
0
可能是微不足道的,但它的工作:
$content = gc "D:\posh\stack\test.txt" $start=139 $end=169 $content | % {$i=0;[email protected]();}{ if($i -ge $start -and $i -le $end){ $lines+=$_ -replace 'WARN', 'DEBUG' } else { $lines+=$_ } $i+=1 }{set-content test_output.txt $lines}
2
使用数组切片:
$内容=获取 - 内容c:\ test.txt
$out = @()
$out += $content[0..139]
$out += $content[140..168] -replace "warn","DEBUG"
$out += $content[169..($content.count -1)]
$out | out-file out.txt
0
所以我的脚本非常相似,所以我打算发布我最终做的事情。
我有一堆服务器都在同一个位置有相同的脚本,我需要更新所有脚本中的路径。
我刚刚更换整条生产线(在此脚本行3)和重写了剧本背出
我的服务器名称和“路径”,以取代旧的路径被存储在阵列(你可以拉,从一个DB如果你想自动化的IT更多:
$servers = @("Server1","Server2")
$Paths = @("\\NASSHARE\SERVER1\Databackups","\\NASSHARE\SERVER2\Databackups")
$a = 0
foreach ($x in $servers)
{
$dest = "\\" + $x + "\e$\Powershell\Backup.ps1"
$newline = '$backupNASPath = "' + $Paths[$a] + '"'
$lines = @(Get-Content $dest)
$lines[3] = $newline
$lines > $dest
$a++
}
它的工作原理,并为我节省了大量的时间登录到每个服务器并更新每个路径。唉
干杯
2
2线:
$FileContent = Get-Content "C:\Some\Path\textfile.txt"
$FileContent | % { If ($_.ReadCount -ge 140 -and $_.ReadCount -le 170) {$_ -Replace "WARN","DEBUG"} Else {$_} } | Set-Content -Path "C:\Some\Path\textfile.txt"
说明:文本文件的
- 内容写入到阵列 “$ FileContent”
- 管$ FileContent阵列为-EachObject cmdlet“%”
- 对于数组中的每个项目,请检查行号($ _。ReadCount)
- 如果行号140-170,用WARN替换DEBUG;否则写入行未修改。
- 注意:您必须添加“Else {$ _}”。否则,文本文件将只包含修改后的行。
- 设置,内容写的内容,文本文件
+0
请在你的回答中添加一个简短的解释。 – 2015-11-24 16:03:13
+2
已添加说明 – WayneC 2015-11-24 17:01:28
相关问题
- 1. 使用DataSet替换文件文本PowerShell
- 2. 替换文件指定行在Python
- 3. 使用Powershell替换方括号
- 4. 如何使用PowerShell替换文件中的某一行?
- 5. 用PowerShell替换文本文件的行,基于不同文本文件的行
- 6. sed通过powershell脚本替换指定的行
- 7. 使用powershell替换文本文件中的字符
- 8. 使用PowerShell替换文本文件中的字符串
- 9. 使用PowerShell替换文件中的文本
- 10. 使用powershell如何替换文本文件中的pageBreak?
- 11. 用错误符号替换PowerShell
- 12. 查找跨越文本的多行并使用PowerShell替换
- 13. PowerShell中的插入号码替换
- 14. 如何使用powershell替换KMZ文件中的字符串
- 15. 如何使用powershell替换msha文件中的值?
- 16. 使用正则表达式替换文件中的Powershell
- 17. 使用PowerShell替换.csv文件中的选项卡
- 18. 替换Powershell的
- 19. UNIX替换文件中的特定行
- 20. 替换两个文件的特定行
- 21. 如何使用Powershell指定收件箱的子文件夹
- 22. 用PowerShell替换SSIS?
- 23. PowerShell替换文件夹名称
- 24. 仅替换特定行上的逗号
- 25. 如何使用Java替换文件中的特定行?
- 26. 如何正确替换使用VBA的文本文件中的新行符号?
- 27. 使用OpenXML SDK用换行符替换docx文件上的文本(换行符)
- 28. 替换行号列
- 29. 使用Powershell替换多个文件和文件夹中的多个字符串
- 30. 替换文件中的行
有趣的提示,我不知道这件事。 – JasonMArcher 2011-05-18 15:50:20
我想我首先在@ShayLevy的一些评论/发布/推文中看到了这一点。 – stej 2011-05-18 19:26:07
Stej你的答案完美无缺,它令人兴奋,我需要的是 – Janki 2011-05-19 00:03:43