如何在Powershell中的文件的每一行上打印/附加行索引号

时间:2018-07-28 18:21:55

标签: powershell

sapmple.txt如下

row1col1||col2||col2||col3
row2col1||col2||col2||col3
row3col1||col2||col2||col3

预期

0||row1col1||col2||col2||col3
1||row2col1||col2||col2||col3
2||row3col1||col2||col2||col3

我的编码方式类似于

get-content "C:\sample.txt" | foreach { "[|][|]" + $_ } | foreach { Index  + $_ } | set-content "C:\sample1.txt"

先调用管道,然后再调用各自的索引,但不起作用。

请您帮忙。

3 个答案:

答案 0 :(得分:1)

就是这样:

$index = 0
Get-Content 'C:\sample.txt' | ForEach-Object { "{0}||{1}" -f $index++, $_ } | Set-Content 'C:\sample1.txt'

如果要在索引前添加前导零,以便更大的数字也可以对齐(在此示例中,所有索引将有4位数字):

Get-Content 'C:\sample.txt' | ForEach-Object { "{0}||{1}" -f ($index++).ToString("0000") , $_ } | Set-Content 'C:\sample1.txt'

答案 1 :(得分:1)

您的示例中的index是什么?据我所知,字符串没有索引属性,Get-Content也没有创建索引属性。

Get-Content已经使用ReadCount知道行号,因此保持运行索引是多余的。但是,它确实从1开始计数,因此需要在此处进行一些小的调整才能满足您的需求。

Get-Content C:\temp\text.txt | ForEach-Object {"{0}||{1}" -f ($_.ReadCount - 1),$_}

我们使用格式运算符-f来尝试使输出字符串更容易编辑。只需将foreach-object的输出通过管道传递到所需的输出。

答案 2 :(得分:0)

另一个想法:

% { $i = 0 } { "$i||$_" ; $i++ }