String 选择的powershell基本语法问题

String 选择的powershell基本语法问题,string,select,powershell,grep,String,Select,Powershell,Grep,背景:这里的目标是使用选择字符串在powershell中执行一些基本命令。出于某种原因,有些事情并没有如预期的那样起作用 假设如下: $vfilter = 'c:/foo/bar/files/*.htm'; Select-String -path $vfilter -pattern ".*DOCTY.*" | sort LineNumber | where-object { $_.Filename -match "02" } |

背景:这里的目标是使用选择字符串在powershell中执行一些基本命令。出于某种原因,有些事情并没有如预期的那样起作用

假设如下:

    $vfilter = 'c:/foo/bar/files/*.htm';
    Select-String -path $vfilter -pattern ".*DOCTY.*"  |
        sort LineNumber |
        where-object { $_.Filename -match "02" } |
        format-list |
        out-file c:/00junk.txt;
。。。这里是输出

    IgnoreCase : True
    LineNumber : 1
    Line       : <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "ht
                 tp://www.w3.org/TR/html4/loose.dtd">
    Filename   : 02junk.htm
    Path       : C:\ ... \02junk.htm
    Pattern    : .*DOCTY.*
    Context    :
    Matches    : {<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "h
                 ttp://www.w3.org/TR/html4/loose.dtd">}
如何让powershell执行相同或类似的操作

3) 如何使用powershell here字符串执行上述2)操作?

1)为了防止包装,您可以为
输出文件指定一个巨大的
宽度
参数

2) 使用
ForEach对象
(别名
%
)生成字符串:

$vfilter = 'c:/foo/bar/files/*.htm';
Select-String -path $vfilter -pattern ".*DOCTY.*"  |
    sort LineNumber |
    where-object { $_.Filename -match "02" } |
    ForEach-Object {
@"
Line Number: $($_.LineNumber)
Path:        $($_.Path)
This is the actual line (below):

$($_.Line)

"@
    } |
    out-file c:/00junk.txt;
$vfilter = 'c:/foo/bar/files/*.htm';
Select-String -path $vfilter -pattern ".*DOCTY.*"  |
    sort LineNumber |
    where-object { $_.Filename -match "02" } |
    ForEach-Object {
@"
Line Number: $($_.LineNumber)
Path:        $($_.Path)
This is the actual line (below):

$($_.Line)

"@
    } |
    out-file c:/00junk.txt;