Windows中对应于grep的-B(前文)和-A(后文)的命令是什么?
Windows中对应于grep的-B(前文)和-A(后文)的命令是什么?
在grep
中,我了解到有一个-B
开关,它会...
打印匹配行之前的NUM行上下文。
...所以例如你可以运行这样的命令:
cvs log -N -S -w-d"1 day ago" | grep -B14 "some text" > afile
在Windows中有相当于这个的吗?我目前的命令是:
cvs log -N -S -w-d"1 day ago" | find "7492" > output.txt
但这只将与7492
在同一行的文本输出,而我需要一些前面的行来有用地解释信息。但据我所见,find
命令没有等同于grep
的-B
开关的开关。有没有办法在Windows中复制grep功能的这个方面?
Windows中的grep命令是一个非常有用的文本搜索工具,它可以在文件或标准输入中查找匹配特定模式的行,并可以输出匹配行的上下文。
然而,Windows中并没有与grep命令的-B(前上下文)和-A(后上下文)等效的命令。这导致了一些用户在Windows系统中无法以相同的方式使用grep命令。
为了解决这个问题,Windows系统中的PowerShell提供了一个名为select-string的命令,它可以用来实现类似于grep命令的功能。通过select-string命令的-context参数,可以指定所需的上下文行数。
例如,可以使用以下命令来实现类似于grep -B和grep -A的效果:
git log | select-string limit -context 5,0
这个例子中,将获取与git提交消息匹配的哈希值,并输出匹配行的前5行。
根据MSDN文档的说明,如果将一个数字作为此参数的值,该数字将确定在匹配之前和之后捕获的行数。如果将两个数字作为值,第一个数字将确定匹配之前的行数,第二个数字将确定匹配之后的行数。
通过使用PowerShell中的select-string命令的-context参数,用户可以在Windows系统中实现类似于grep命令的-B和-A的功能。这为在Windows环境中进行文本搜索和分析提供了更多的灵活性和便利性。