如何从一个文件夹中的多个文本文件(* .txt)中删除前5个最旧的行?

时间:2014-08-17 00:11:49

标签: powershell text-processing

我正在寻找如何使用powershell删除一个文件夹中多个文本文件(* .txt)中排名前五的最旧行的方法。每个文本文件都以逗号分隔,每行以日期" mm / dd / yyyy"开头。 (除了标题)

此代码将删除早于' 01/01 / 2014'但我需要删除前5行最旧的行(记录从最旧到最新排序),所以我需要删除2到6行(每个文件的第一行是标题,我想保留它)。有什么想法吗?

foreach ($file in gci *.txt){
   (gc $file) |
     ? {[datetime]$_.split(',')[0] -ge '01/01/2014'
     } | set-content $file

我还发现此网页http://powershell-tips.blogspot.ca/2011/05/display-top-n-lines-or-last-1n-lines-of.html可能基于此网页。

1 个答案:

答案 0 :(得分:0)

您可以使用-skip

中的Select-Object
foreach ($file in gci *.txt){
   (gc $file) |
     ? {[datetime]$_.split(',')[0] -ge '01/01/2014'
     } | Select-Object -skip 5 | set-content $file