使用 "findstr" 时如何获得命令的完整输出?

How do I get the full output of a command while using "findstr"?

我试图在使用 Select-Stringfindstr 时获取命令 netstat -abn 的完整输出,但它不起作用,因为只列出了搜索字符串。我正在寻找与 grep 在 Linux 上所做的相同的行为,如果你 运行 netstat -an | grep tcp 它将 return netstat 的完整输出并将显示所有信息。

下面是 grep 的输出在 Linux 中的示例:

$ netstat -an | grep tcp
tcp        0      0 0.0.0.0:44587               0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN
tcp        0     24 10.0.2.15:22                10.0.2.2:21724              ESTABLISHED
tcp        0      0 :::111                      :::*                        LISTEN
tcp        0      0 :::80                       :::*                        LISTEN
tcp        0      0 :::22                       :::*                        LISTEN
tcp        0      0 ::1:25                      :::*                        LISTEN
tcp        0      0 :::443                      :::*                        LISTEN
tcp        0      0 :::37224                    :::*                        LISTEN

当我使用 findstrSelect-String 时,只显示名称,但没有其他信息。

这是使用 Select-String:

时输出结果的示例
PS C:\windows\system32> netstat -abn | Select-String -Pattern "phpstorm64"

 [phpstorm64.exe]
 [phpstorm64.exe]
 [phpstorm64.exe]

这是使用 findstr(使用我为其创建的别名)时输出的示例:

PS C:\windows\system32> New-Alias grep findstr
PS C:\windows\system32> netstat -abn | grep "phpstorm64"
 [phpstorm64.exe]
 [phpstorm64.exe]
 [phpstorm64.exe]

这是一个示例,说明当您单独 运行 命令 netstat -abn 而没有任何 findstrSelect-String:

时输出的样子
PS C:\windows\system32> netstat -abn

Active Connections

  Proto  Local Address          Foreign Address        State
 [VBoxHeadless.exe]
  TCP    0.0.0.0:9001           0.0.0.0:0              LISTENING
 [phpstorm64.exe]
  TCP    0.0.0.0:10137          0.0.0.0:0              LISTENING
 [phpstorm64.exe]
  TCP    0.0.0.0:20080          0.0.0.0:0              LISTENING
 [phpstorm64.exe]
  TCP    0.0.0.0:33060          0.0.0.0:0              LISTENING
 [VBoxHeadless.exe]
  TCP    10.188.1.98:139        0.0.0.0:0              LISTENING

这是我想通过使用 findstrSelect-String 实现的输出(我刚刚添加了一行,但我希望看到所有匹配 phpstorm64 字的行):

$ netstat -abn | grep "phpstorm64"
Proto  Local Address          Foreign Address        State
TCP    0 0.0.0.0:9001         0.0.0.0                LISTENING

最后这是我使用的 PowerShell 版本:

PS C:\windows\system32> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      1      14393  1944

如何在管道之前显示命令的完整输出?

使用 Select-StringContext 参数。它允许您在匹配项之后包含前面或后面的行:

netstat -abn |Select-String -Pattern phpstorm64 -Context 0,1

这将显示每个匹配行及其之后的下一行