如果没有行号,我如何在powershell中编写Select String的输出



我使用powershell使用正则表达式过滤文本文件。为此,我使用以下命令:Select-String -Pattern "^[0-9]{2}[A-Z]{2}[a-z]{5}" -CaseSensitive rockyou.txt > filter.txt然而,问题是,当将它们写入filter.txt时,它会在匹配的字符串之前加上原始文件的名称和行号,例如:

rockyou.txt:12345:abcdefg

rockyou.txt:12345:abcdefg

rockyou.txt:12345:abcdefg

我怎样才能使它忽略行号?

Select-String为每个匹配输出一个对象,每个对象都有一个Line属性,其中包含发生匹配的原始行。您只能获取Line值,如下所示:

... |Select-String ... |Select-Object -ExpandProperty Line |Out-File filter.txt

这种方式似乎有效。Set content保存matchinfo对象的字符串版本,没有任何额外的空行,而不是out file或">"。

get-content rockyou.txt | select-string '^[0-9]{2}[A-Z]{2}[a-z]{5}' -ca | 
set-content filter.txt
get-content filter.txt
01ABcdefg

我突然想到你可能仍然想要文件名:

select-string '^[0-9]{2}[A-Z]{2}[a-z]{5}' rockyou.txt -ca | 
% { $_.filename + ':' + $_.line } > filter.txt
cat filter.txt
rockyou.txt:01ABcdefg

相关内容

  • 没有找到相关文章

最新更新