Board logo

标题: [问题求助] PowerShell如何防止在管道中未匹配则不输出 [打印本页]

作者: 5i365    时间: 2022-1-27 10:25     标题: PowerShell如何防止在管道中未匹配则不输出

下面的代码, 如果a.txt中没有空行, 或没有行中包含: 或,  则最后不能生成ok.txt, 如何自始至终都生成ok.txt?
另外, 第2行和第3行和第4行能合并写在一起吗?
  1. gc -Encoding UTF8 "C:\Users\Administrator\Desktop\a.txt" |
  2. ? { $_.trim() -ne "" } | #排除空行
  3. ? { $_.trim() -notmatch ":" } | #排除包含:的行
  4. ? { $_.trim() -notmatch "," } | #排除包含,的行
  5. sc -Encoding UTF8 "C:\Users\Administrator\Desktop\ok.txt"
复制代码

作者: idwma    时间: 2022-1-27 11:28

  1. (gc a.txt) -notmatch '^\s*$|[:,]'
复制代码

作者: 5i365    时间: 2022-1-27 12:11

本帖最后由 5i365 于 2022-1-27 12:14 编辑

回复 2# idwma


我在前面加了个替换删除空格, 奇怪, 有时能输出, 有时输出不了, 下面这两行代码, 在我的电脑上无法生成ok.txt, 删除替换也不行, 真是怪了, ps5.1
a.lrc
https://send.cm/d/8FoA

(gc "C:\Users\Administrator\Desktop\a.lrc") -replace '\s{1,}' -notmatch '^\s*$|[:,【]' |
sc -Encoding UTF8 "C:\Users\Administrator\Desktop\ok.txt"
作者: 5i365    时间: 2022-1-27 14:01

回复 4# idwma


    不好意思, 没有密码, https://send.cm/d/8GS6
作者: idwma    时间: 2022-1-27 14:12

回复 3# 5i365


    每一行都有:号当然不显示了
作者: 5i365    时间: 2022-1-27 14:32

回复 5# idwma


明白了, 多谢指点!!!

能让那些匹配先后执行吗? 我原本是想把 [XXXX] 先删掉,然后再执行上面命令的操作
作者: idwma    时间: 2022-1-27 14:54

  1. (gc "C:\Users\Administrator\Desktop\a.lrc") -replace '\[.*\]' -notmatch '^\s*$|[:,【]' |
  2. sc -Encoding UTF8 "C:\Users\Administrator\Desktop\ok.txt"
复制代码

作者: 5i365    时间: 2022-1-27 15:11

回复 7# idwma


    多谢, 这回稳了




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