在按文件名分隔的文件夹中打印 n 个文件的第一行

Printing n first lines of files in folder separed by filename

提问人:Antoni Gual Via 提问时间:11/17/2023 更新时间:11/17/2023 访问量:18

问:

我想在一个文件夹中打印每个文件的前两行,文件名作为标题这是我所拥有的:

Get-ChildItem *.4th | % {$filename = $_.Name 
( $_| Get-Content -First 2) |
% { "{0}`r`n{1}`r`n" -f $filename, $_ }} 

它有效,但它将两行视为不同的项目

zigzag.4th
\ Taken from xxxxx 

zigzag.4th
\ 4tH version 2010, xxx

我怎样才能把这两条线放在一起?

zigzag.4th
\ Taken from xxxxx 
\ 4tH version 2010, xxx
PowerShell的

评论


答:

0赞 Antoni Gual Via 11/17/2023 #1

没关系,我解决了它,在 Get-Content 中添加了一个 -join

Get-ChildItem *.4th | % {$filename = $_.Name 
($_  | Get-Content -Head 2) -join ("`r`n")| % { 
"`r`n{0}`r`n{1}" -f $filename, $_ }}  
0赞 Santiago Squarzon 11/17/2023 #2

这并不能完全回答您的问题,但您可以根据需要使用 Context 值或为此使用:Select-String12

Select-String -Path *.4th -Pattern ^ -List -Context 2 |
    Select-Object Filename, Line, @{ N='Context'; E={ $_.Context.PostContext -join "`r`n" }} |
    Format-List