Powershell 问题 - 如何从某个位置删除行?
Posted
技术标签:
【中文标题】Powershell 问题 - 如何从某个位置删除行?【英文标题】:Powershell question - How can I deleted lines from a certain position? 【发布时间】:2022-01-07 03:01:07 【问题描述】:(对不起,我的英语不好。)
我有两个问题:
-
问题:
我有一个 .txt 文件并使用 powershell 在 .txt 中搜索一个单词:
我的代码:
Select-String .\example.txt -pattern "myword" | select -ExpandProperty line
不错不错。 PowerShell 在第 63 行找到了这个词。 在第 63 行之后,.txt 文件还有 x 行,所有 (64) 行都应该被删除。 如何做到这一点?
get-content .\example.txt | select-string -pattern 'myword' -notmatch | Out-File .\new_example.txt
这仅删除了第 63 行。但是,这应该保留,并且只应删除其余部分。
-
问题:
差不多一样。我搜索两个计数
示例:将 12 和 33 放入 .txt
Powershell 找不到 12a 和 33a。
这是正确的。 Powershell 应该为它“11a 到 56a”,并清除“10a”和“123a”行
.txt 文件示例: 10个, 11a, 21a, 20w, 32a, 56a, 123a,
这是所需的 .txt 文件: 11a, 21a, 20w, 32a, 56a,
我怎样才能做到?我希望你能帮助我解决这个问题。 谢谢。
【问题讨论】:
【参考方案1】:使用#15136
Add -From
and -To
parameters to Select-String
中提出的原型:
@'
One
Two
myword
three
'@ -split '\r?\n' |SelectString -To myword
返回
One
Two
'10a', '11a', '21a', '20w', '32a', '56a', '123a' |
SelectString -From '(?=11a)' -To '(?<=56a)'
返回
11a
21a
20w
32a
56a
另见:
Extract specific text and extract How to select between multiple lines in power shell? How to read lines between 2 special characters in txt-file with Powershell Unable to get data between multiple keyword using powershell Need Regex to match multiple lines until Match is found between common delimiters Extract multiple lines of text between two key words from shell command in powershell Extract block of text using regex and powershell Need to search a line from a long config file with powershell Powershell Regex: Reading a multi-line string between two points【讨论】:
非常感谢 iRon,这是一个很好的帮助!以上是关于Powershell 问题 - 如何从某个位置删除行?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PowerShell 从 MSMQ 消息队列中删除特定消息
用于删除或存档旧日志文件的 PowerShell 脚本在本地运行良好,但在远程位置无法运行
用于从 Appfabric 缓存中删除项目的 Powershell 命令