我试图对文本文件的子字符串进行子字符串处理,以便从文本文件中删除我需要的文本。
在此示例中,如果文件包含以下内容
这是一个测试例子 第二行文字
第三行文字
我希望在秒之前删除所有内容,然后在" second"之间取消所有内容。和#34;第三行"。所以输出将是
第二行文字
第三行
这就是我所拥有的,如果将硬编码的长度放在$秒内,它可以工作,但我不能将长度作为变量得到正确的结果:
$text = ( Get-Content -raw Test.txt | Out-String ).Trim()
$first = $text.IndexOf('second')
$second = $text.Substring($text.IndexOf('second'), ($text.length-1))
$third = $second.Substring(0, $second.IndexOf('third line'))
$text.Substring($first, $third) | Set-Content file2.txt
答案 0 :(得分:1)
你可以通过以下两种方式实现这一目标:
首先 - 指明你不想要的东西
Get-Content -Path textfile |
Where-Object {$_ -NotLike 'this is a*'} |
Set-Content file2.txt
秒 - 指定你想要的东西
Get-Content -Path textfile |
Where-Object {$_ -Like 'second*' -or $_ -like 'third*'} |
Set-Content file2.txt
或
Get-Content -Path textfile |
Where-Object {$_ -match '^(second|third)'} |
Set-Content file2.txt
答案 1 :(得分:0)
在这里,我获取文本数据然后将其拆分为单行(`n )这样做将生成一个字符串行数组。然后我通过数组枚举[1..2]得到字符串数。
PS C:\> $string = @"
this is a test example
second line of text
third line of text
"@
$string.Split("`n")[1..2]
second line of text
third line of text