如何使用批处理脚本删除字符串并替换文本文件中的内容。
测试.txt
Version: 4.5.0
Import:
//MPackages/Project/config/abc.txt #head
//Packages/Project/config/cde.txt #head
View: 24234
//MPackages/Project/config/ac.txt #head
删除“导入:”和“查看:”之间的所有文本,并将其替换为示例文本文件中的内容。
示例.txt
1
2
3
期望输出
Version: 4.5.0
Import:
1
2
3
View: 24234
//MPackages/Project/config/ac.txt #head
示例脚本
[string]$f=gc Test.txt;
$pL=$f.IndexOf('Import:')+'Import:'.Length;$pR=$f.IndexOf('View:');
$s=$f.Remove($pL,$pR-$pL) | set-content Test.txt
i 删除了 Import: 和 View: 之间的所有内容,但它破坏了文本结构。
答案1
您必须解析它。逐行查找Import:
。找到后设置一个标志,返回示例内容,然后忽略所有内容,直到找到View:
。然后再次开始返回所有内容。冲洗,重复。
$sampleContent = Get-Content 'Sample.txt'
$inImport = $false
Get-Content -Path 'Test.txt' |
ForEach-Object {
if( $inImport )
{
if( $_ -like 'View:*' )
{
$inImport = $false
return $_
}
return
}
if( $_ -like 'Import:*' )
{
$inImport = $true
$_
return $sampleContent
}
return $_
}