Board logo

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

作者: 5i365    时间: 2022-3-29 19:36     标题: 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. }
复制代码

作者: idwma    时间: 2022-3-29 21:12

  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. }
复制代码

作者: w6xb    时间: 2022-3-30 01:00

-replace "[^\r\n]*?[:-][^\r\n]*\r\n", ""
作者: 5i365    时间: 2022-3-30 06:34

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

回复 2# idwma


   感谢大侠帮忙, 前5行中 ,下面这行没有过滤掉
编曲:屠颖
作者: 5i365    时间: 2022-3-30 06:37

回复 3# w6xb

感谢大侠帮助, 请问把这行放在哪里? 我尝试放在-split后, 或直接使用 这行 ,都没有输出
作者: 5i365    时间: 2022-3-30 18:48

回复 2# idwma


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

else { 1 }
作者: idwma    时间: 2022-3-30 22:46

回复 6# 5i365


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

回复 7# idwma


   多谢大侠指教, 感觉以后肯定会用到, 先mark




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2