将索引号添加到"选择字符串"的结果列表中



>我需要在文件中搜索术语并在搜索结果中显示索引,以便于引用。

bash 中的命令将是:

cat <file> | grep 'Table: ' | cat -n

到目前为止,我在Powershell中拥有的内容:

Get-Content <file> | Select-String 'Table: ' | Select-Object -Property LineNumber, Line

不幸的是,我没有意识到LineNumber给出了文件中的实际行,而不是结果列表中的索引。

如何将 bash 命令转换为其 Powershell 等效项?

实际上,Select-Object输出的对象.Line属性指示给定输入文件中每个匹配项的行号。

PowerShell 没有直接等效的cat -n(在输出的所有输入行前面附加一个基于1的索引(,但使用ForEach-Objectcmdlet 滚动自己的索引并不难:

$i = 0
Get-Content file.txt | Select-String 'Table: ' | ForEach-Object {
"{0,6}`t{1}" -f ++$i, $_.Line
}

上面使用格式运算符-f将第一个 RHS 操作数 ({0}( 左空格键移动到 6 个字符 (,6(,这是(递增的(索引,++$i,后跟一个制表符 (`t( 和第二个 RHS 操作数 ({1}(,这是手头的输入行 ($_.Line(。

只需使用 WSL:

bash -c "cat <file> | grep 'Table: ' | cat -n"

这将在Powershell中运行bash代码。对于真正的Powershell选项,您可以这样做:

foreach ($line in $(Get-Content -Path <filepath> | Select-String 'Table: ')){
$count++
echo "$count $line"
}

相关内容

  • 没有找到相关文章

最新更新