powershell - 将索引号添加到“Select-String”的结果列表中
问题描述
我需要在文件中搜索一个词并在搜索结果中显示一个索引,以便于引用。
bash 中的命令是:
cat <file> | grep 'Table: ' | cat -n
到目前为止我在 Powershell 中所拥有的:
Get-Content <file> | Select-String 'Table: ' | Select-Object -Property LineNumber, Line
不幸的是,我没有意识到这LineNumber
给出了文件中的实际行而不是结果列表中的索引。
如何将 bash 命令转换为等效的 Powershell?
解决方案
实际上,.Line
对象输出的属性Select-Object
表示给定输入文件中每个匹配项的行号。
PowerShell 没有直接等价物cat -n
(在输出的所有输入行前添加一个基于 - 的索引),但使用cmdlet1
自己动手并不难:ForEach-Object
$i = 0
Get-Content file.txt | Select-String 'Table: ' | ForEach-Object {
"{0,6}`t{1}" -f ++$i, $_.Line
}
上面使用格式运算符-f
,将左空格填充到 6 个字符 ( ) 第一个 RHS 操作数 ( ),它是(递增的)索引,,后跟一个制表符 ( ) 和第二个 RHS 操作数 ( ),这是手头的输入行()。,6
{0}
++$i
`t
{1}
$_.Line
推荐阅读
- python - pandas 加列,注意一个Series的真值是不明确的
- python - 了解 Docker 使用 Docker-Alpine-Python-Flask 编写 Nginx-Proxy
- java - 从arraylist中获取接下来的几个项目
- uwp-xaml - 可以在uwp的导航栏中添加扩展器控件吗?
- android - 颤振类级别变量布尔不起作用
- d3.js - 如何创建具有垂直线和不同背景的折线图?
- javascript - 如何找到相邻元素?
- android - Android SmsManager 从 sqlite 数据库向多个收件人发送消息
- react-native - WebStorm 自动完成和自动导入不起作用
- android - Android:如何在模拟器等真实设备中查看应用程序日志?