(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.txt
文件的内容为一个单独的字符串。删除所有注释行(以
//
或#
开头的行)。将连续的换行符替换成单个换行符。
将处理后的内容保存到
2.txt
文件中。用记事本打开
2.txt
文件查看结果。
这样就可以去除注释行并整理文件内容,使其更加整洁和规范。