如果有一個文件,例如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替換INI文件中的整行
- 5. 如何使用PowerShell替換文件中的某一行?
- 6. 使用java替換文本文件中的行號
- 7. 用PowerShell替換文本文件的行,基於不同文本文件的行
- 8. sed通過powershell腳本替換指定的行
- 9. powershell替換文字
- 10. 使用powershell替換文本文件中的字符
- 11. 使用PowerShell替換文件中的文本
- 12. 使用powershell如何替換文本文件中的pageBreak?
- 13. 使用PowerShell替換文本文件中的字符串
- 14. 用錯誤符號替換PowerShell
- 15. 用PowerShell遞歸替換符號
- 16. 用分號替換文件中的最後一個換行符
- 17. 使用PowerShell替換.ini中的文本行
- 18. 查找跨越文本的多行並使用PowerShell替換
- 19. 使用python替換文本文件中的特定行?
- 20. 使用php替換文本文件中的特定行?
- 21. PowerShell函數替換或添加文本文件中的行
- 22. PowerShell中的插入號碼替換
- 23. 使用powershell替換文件夾中其他文件夾中的文件
- 24. 使用正則表達式替換文件中的Powershell
- 25. 使用PowerShell替換多個文件的內容
- 26. 使用PowerShell替換.csv文件中的選項卡
- 27. 如何使用powershell替換msha文件中的值?
- 28. 如何使用powershell替換KMZ文件中的字符串
- 29. 替換Powershell的
- 30. 用PowerShell替換空間的新行
有趣的提示,我不知道這件事。 – JasonMArcher 2011-05-18 15:50:20
我想我首先在@ShayLevy的一些評論/發佈/推文中看到了這一點。 – stej 2011-05-18 19:26:07
Stej你的答案完美無缺,它令人興奮,我需要的是 – Janki 2011-05-19 00:03:43