[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] PowerShell将多行文本中的前N行和后N行中的符合条件的行过滤掉

下面的代码, 可以把所有包含:和-的行过滤掉, 而我需要过滤掉前五行和后五行中包含:和-的行, 请教路过大侠, 有什么高招, 提前感谢!
  1. @"
  2. 胡歌 - 逍遥叹
  3. 作词:陈宇任
  4. 作曲陈宇任
  5. 编曲:屠颖
  6. 岁月难得沉默
  7. 秋风厌倦漂泊
  8. 夕阳赖着不走
  9. 挂在墙头舍不得我
  10. 昔日伊人耳边话
  11. 已和潮声向东流
  12. 再回首
  13. 往事也随枫叶一片片落
  14. 爱已走到尽头
  15. 恨也放弃承诺
  16. 命运自认-幽默
  17. 想法太多由不得我
  18. :壮志凌云几分酬
  19. 知己难逢几人留
  20. 再回首却闻:笑传醉梦中:
  21. 笑叹词穷-古痴今狂终成空
  22. 刀钝刃乏恩断义绝梦方破
  23. 路荒已叹饱览足迹:没人懂
  24. 多年望眼欲穿过
  25. 红尘滚滚我没看透
  26. 自嘲墨尽千情万怨英杰愁
  27. 曲终人散发:-花鬓白红颜殁烛残未觉与日争辉徒消瘦:
  28. 当泪干血隐狂涌
  29. :白雪纷飞都成红
  30. "@ -split '(?<!\r)\n' |
  31. ?{
  32.         $_ -notmatch ":|-"
  33. }
复制代码
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

回复 7# idwma


   多谢大侠指教, 感觉以后肯定会用到, 先mark
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

TOP

回复 6# 5i365


后面那个也可以是5或别的数,随便改
++$i 先加1再判断
$i++ 判断完再加1
  1. else { $true }
  2. [int]$true
  3. [int]$false
复制代码
其实文档里有解释的

TOP

回复 2# idwma


   把第一个4改成5就行了, 但是 为什么是5, 后面那个为什么4, 还有下面两句, 都是第一次看到, 看不懂, 要是能找个解释的文章就好了  
++$i

else { 1 }
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

TOP

回复 3# w6xb

感谢大侠帮助, 请问把这行放在哪里? 我尝试放在-split后, 或直接使用 这行 ,都没有输出
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

TOP

本帖最后由 5i365 于 2022-3-30 08:30 编辑

回复 2# idwma


   感谢大侠帮忙, 前5行中 ,下面这行没有过滤掉
编曲:屠颖
1

评分人数

    • idwma: 好问题,把4改成5试试技术 + 1
本人所发所有贴子或代码, 诸大侠若认为有改进之处,请不吝赐教,感激不尽!

TOP

-replace "[^\r\n]*?[:-][^\r\n]*\r\n", ""

TOP

  1. $a=@"
  2. 胡歌 - 逍遥叹
  3. 作词:陈宇任
  4. 作曲陈宇任
  5. 编曲:屠颖
  6. 岁月难得沉默
  7. 秋风厌倦漂泊
  8. 夕阳赖着不走
  9. 挂在墙头舍不得我
  10. 昔日伊人耳边话
  11. 已和潮声向东流
  12. 再回首
  13. 往事也随枫叶一片片落
  14. 爱已走到尽头
  15. 恨也放弃承诺
  16. 命运自认-幽默
  17. 想法太多由不得我
  18. :壮志凌云几分酬
  19. 知己难逢几人留
  20. 再回首却闻:笑传醉梦中:
  21. 笑叹词穷-古痴今狂终成空
  22. 刀钝刃乏恩断义绝梦方破
  23. 路荒已叹饱览足迹:没人懂
  24. 多年望眼欲穿过
  25. 红尘滚滚我没看透
  26. 自嘲墨尽千情万怨英杰愁
  27. 曲终人散发:-花鬓白红颜殁烛残未觉与日争辉徒消瘦:
  28. 当泪干血隐狂涌
  29. :白雪纷飞都成红
  30. "@ -split '(?<!\r)\n'
  31. $a|
  32. ?{
  33.         if(++$i -lt 4 -or $i -gt $a.count-4){$_ -notmatch ":|-"}else{1}
  34. }
复制代码

TOP

返回列表