• 登录
社交账号登录

把#或//开头的行和多次回车改为一次的简单powershell命令

作者:admin 发布时间:2024-11-26 点击数:

(Get-Content -Path "1.txt" -Raw) -replace '(?m)^[ \t]*(//|#).*$\r?\n?','' -replace '[\r\n]{2,}',"`n" | Set-Content .\2.txt; notepad .\2.txt

#   打开powershell

#读取 1.txt 文件,不论"//" 或者 "#"之前的n个空格,删除以 "//" 或者 "#" 开头的

#不论回车之前的n个空格,将多次回车替换为一次
#用notepad打开


1. (Get-Content -Path "1.txt" -Raw)

  • Get-Content -Path "1.txt":这个命令从 1.txt 文件中读取所有内容。默认情况下,Get-Content 是按行读取的,但使用 -Raw 参数时,它会将文件的所有内容作为一个单独的字符串加载,而不是按行分割。这样可以更方便地进行整体的正则替换操作。

2. -replace '(?m)^[ \t]*(//|#).*$\r?\n?',''

  • -replace:这是一个替换操作,后面跟着的是一个正则表达式和一个替换字符串。

  • (?m):这个是多行模式(multiline mode)的标志。它使得 ^ 和 $ 正则符号匹配每行的开始和结束,而不是整个文本的开始和结束。

  • ^[ \t]*(//|#).*$:这段正则表达式匹配所有以注释符号(// 或 #)开头的行,前面可能有任意数量的空格或制表符([ \t]*)。具体解释:

    • ^:匹配行的开头。

    • [ \t]*:匹配零个或多个空格或制表符。

    • (//|#):匹配注释符号 // 或 #

    • .*:匹配注释符号后面的所有字符。

    • $\r?\n?:匹配行尾的换行符(\r?\n? 允许 Windows 和 Unix 风格的换行符)。

  • 这个正则表达式的作用是匹配以 // 或 # 开头的注释行,并将它们替换为空字符串(即删除这些行)。

3. -replace '[\r\n]{2,}',"n"`

  • **-replace '[\r\n]{2,}',"n"**:这个替换操作用于将连续的多个换行符(\r\n\n)替换为单一的换行符 "n"

    • [\r\n]{2,}:匹配两个或更多连续的换行符(无论是 \r\n 或者 \n)。

    • "`n":将匹配的多重换行符替换成一个单独的换行符 "n"`。

4. Set-Content .\2.txt

  • Set-Content .\2.txt:将经过替换处理后的文本写入到 2.txt 文件中。如果文件已经存在,它会覆盖原文件。

5. notepad .\2.txt

  • notepad .\2.txt:最后,使用 notepad 打开 2.txt 文件。notepad 是 Windows 系统的默认文本编辑器。如果你不希望使用记事本,可以将它替换成其他打开文件的程序。

总结

这段 PowerShell 脚本的流程是:

  1. 读取 1.txt 文件的内容为一个单独的字符串。

  2. 删除所有注释行(以 // 或 # 开头的行)。

  3. 将连续的换行符替换成单个换行符。

  4. 将处理后的内容保存到 2.txt 文件中。

  5. 用记事本打开 2.txt 文件查看结果。

这样就可以去除注释行并整理文件内容,使其更加整洁和规范。