Regex Powershell将替换不匹配的条目
我正在编写一个powershell脚本,用于编辑一些文本文件。到目前为止,我已经成功地使用selectstring提取了我想要编辑的所有行,然后在前面文章的帮助下,我成功地删除了每行上我不需要的所有信息。接下来我要做的是遍历每一行并删除与特定字符串不匹配的任何条目。因此,例如,文本文件可能包含以下条目:Regex Powershell将替换不匹配的条目,regex,powershell,Regex,Powershell,我正在编写一个powershell脚本,用于编辑一些文本文件。到目前为止,我已经成功地使用selectstring提取了我想要编辑的所有行,然后在前面文章的帮助下,我成功地删除了每行上我不需要的所有信息。接下来我要做的是遍历每一行并删除与特定字符串不匹配的任何条目。因此,例如,文本文件可能包含以下条目: "1.1.1.1" "2.2.2.2." "3.3.3.3" "4.4.4.4" "1.2.3.4" "1.2.3.4" "1.1.1.1" "2.2.2.2" "3.3.3.3" "4.4.4
"1.1.1.1" "2.2.2.2." "3.3.3.3" "4.4.4.4" "1.2.3.4"
"1.2.3.4" "1.1.1.1" "2.2.2.2" "3.3.3.3" "4.4.4.4"
我想去掉任何不是“1.1.1.1”或“2.2.2.2”或“3.3.3.3”或“4.4.4.4”的内容
- 所有条目都在双引号内
- 需要删除的条目可能位于该行的任何位置李>
- 需要删除的条目在每行上都不同
- 需要保留的条目是固定的
1 : Dhcp
2 : Server
3 : 192.168.0.1
4 : Scope
5 : 192.168.0.10
6 : set
7 : optionvalue
8 : 6
9 : IPADDRESS
10 : 192.168.0.11
11 : 192.168.0.12
12 : 192.168.0.13
13 : 192.168.0.14
14 : 192.168.0.15
15 : 192.168.0.16
16 : 192.168.0.17
17 :
18 :
19 :
20 :
我想做的是浏览csv文件,检查每个条目第10-16列的值,并删除任何与预定义列表不匹配的条目。您可以将每个字符串与可接受值的数组进行比较,并相应地执行任何操作 $array=“1.1.1.1”、“2.2.2.2”、“3.3.3.3” 如果($array-notcontains$data){$data-replace.“,”}这是什么
$a -replace '\s*"1.1.1.1"\s*|\s*"2.2.2.2"\s*|\s*"3.3.3.3"\s*|\s*"4.4.4.4"\s*'
只需从所有匹配行创建一个新数组,然后将文件内容设置为该新数组 如果要创建一个包含所有不匹配项的数组,可以将其更改为
-notmatch
$pattern = "1\.1\.1\.1|2\.2\.2\.2|3\.3\.3\.3|4\.4\.4\.4"
$file_path = "C:\text.csv"
$text_file = get-content $file_path
foreach ($line in $text_file) {
if ($line -match $pattern) {
$line += @($new_lines)
}
$new_lines | set-content $file_path
}
条件的右括号不正确。和
-替换“*”,“
将永远不起作用Hi Christian,感谢您的回复,您的解决方案几乎就是我所需要的…使用该代码,我能够删除1.1.1、2.2.2等的所有痕迹,但我要做的是删除任何不是1.1.1、2.2.2等的内容