正则表达式替换文件内容并删除不匹配的行
Regex replace contents of file and delete lines that don't match
我有一个很大的日志文件,我想从中提取某些类型的行。我创建了一个工作正则表达式来匹配这些行。我现在如何使用此正则表达式来提取行而不是其他内容?我试过了
cat .\file | %{
if($_ -match "..."){
$_ -replace "...", '...'
}
else{
$_ -replace ".*", ""
}
}
这几乎可以工作,但不感兴趣的行仍然保留为空白行(意味着感兴趣的行间隔很远)。
最好的方法是完全删除 else
子句。如果你这样做,那么 ForEach-Object
块的迭代不会返回任何对象。
cat .\file | %{
if($_ -match "..."){
$_ -replace "...", '...'
}
}
只需附加到 ,您甚至不需要循环结构。 -match
和 -replace
将用作数组运算符。删除 if
和 ForEach-Object
.
的需要
(Get-Content .\file) -match "..." -replace "...","..."
Get-Content
是别名的目标 cat
我有一个很大的日志文件,我想从中提取某些类型的行。我创建了一个工作正则表达式来匹配这些行。我现在如何使用此正则表达式来提取行而不是其他内容?我试过了
cat .\file | %{
if($_ -match "..."){
$_ -replace "...", '...'
}
else{
$_ -replace ".*", ""
}
}
这几乎可以工作,但不感兴趣的行仍然保留为空白行(意味着感兴趣的行间隔很远)。
最好的方法是完全删除 else
子句。如果你这样做,那么 ForEach-Object
块的迭代不会返回任何对象。
cat .\file | %{
if($_ -match "..."){
$_ -replace "...", '...'
}
}
只需附加到 -match
和 -replace
将用作数组运算符。删除 if
和 ForEach-Object
.
(Get-Content .\file) -match "..." -replace "...","..."
Get-Content
是别名的目标 cat