如何在 PowerShell 中“grep”并显示周围的行/上下文?

Posted

技术标签:

【中文标题】如何在 PowerShell 中“grep”并显示周围的行/上下文?【英文标题】:How to "grep" in PowerShell and also show surrounding lines/context? 【发布时间】:2020-09-25 06:42:16 【问题描述】:

Powershell cmd 的“上下文行控制”设置是什么:findstr 或什么是替代 Powershell cmd,它可以让我在某些输出中找到字符串并方便我打印周围的行?

在 GNU/Linux 上我会这样做:grep -A 5 -B 5 somestring file.txt

下面的命令搜索字符串“four”,但要求 grep 在找到的行上方显示 1 行,在找到的包含字符串的行下方显示 2 行。

$ grep -A 2 -B 1 four tmp.text
three
four
five
six
$ cat tmp.text
one
two
three
four
five
six
seven

谢谢

【问题讨论】:

我添加了一个示例来说明我在寻找什么。 看看Select-String。您应该阅读完整的帮助,包括示例以了解如何使用它。 我喜欢你在他发布答案后立即回答的方式。 【参考方案1】:

我在这里找到了答案:https://communary.net/2014/11/10/grep-the-powershell-way/

您可以像这样搜索示例文件:

PS C:\Users\dan> Select-String four .\tmp.txt -Context 1,3

  tmp.txt:3:three
> tmp.txt:4:four
  tmp.txt:5:five
  tmp.txt:6:six
  tmp.txt:7:seven

【讨论】:

您还可以使用您在问题中演示的实际 bash 命令bash -c "grep -A 2 -B 1 four tmp.text" 很好,是的,通过使用 WSL(docs.microsoft.com/en-us/windows/wsl/install-win10)。

以上是关于如何在 PowerShell 中“grep”并显示周围的行/上下文?的主要内容,如果未能解决你的问题,请参考以下文章

bash 和 powershell 常用命令集锦

使用PowerShell从com端口获取Linux设备IP地址

powershell Equivalente del comando grep de bash en powershell

Win7 Windows powershell

windows powershell怎么关闭

在 Azure PowerShell 中显示自定义错误消息并退出