如何批量删除文本文件中<开头到>结尾区间的所有内容?
批量删除文本中<到>区间内容的实现方案
方案1:Python跨平台实现(兼容性最高,全系统通用)
- 将以下代码保存为
clean_tags.py,放在存储文本文件的文件夹根目录 - 代码默认仅处理
.txt后缀的文件,会自动将原文件备份为原文件名.txt.bak,避免误操作丢失数据
import os import re # 配置项:可根据需求修改 TARGET_SUFFIX = '.txt' ENABLE_BACKUP = True for filename in os.listdir('.'): # 跳过备份文件和非目标后缀文件 if not filename.endswith(TARGET_SUFFIX) or filename.endswith('.bak'): continue # 读取完整文件内容 with open(filename, 'r', encoding='utf-8', errors='ignore') as f: content = f.read() # 非贪婪匹配所有<开头>结尾的区间内容并删除,支持跨行匹配 cleaned_content = re.sub(r'<.*?>', '', content, flags=re.DOTALL) # 备份原文件 if ENABLE_BACKUP: os.rename(filename, f"{filename}.bak") # 写入清理后的内容 with open(filename, 'w', encoding='utf-8') as f: f.write(cleaned_content)
- 运行方法:在当前文件夹打开终端,执行命令
python clean_tags.py即可
方案2:Linux/Mac 终端单行命令(无需写脚本,处理速度快)
直接在目标文件夹的终端执行以下命令,会自动批量处理所有txt文件,原文件备份为.bak格式:
perl -0777 -i.bak -pe 's/<.*?>//g' *.txt
方案3:Windows PowerShell 单行命令
打开PowerShell,切换到目标文件目录后执行以下命令即可批量处理,建议先备份少量文件测试效果:
Get-ChildItem *.txt | ForEach-Object { $content = Get-Content $_.FullName -Raw; $content = $content -replace '<.*?>', ''; Set-Content $_.FullName -Value $content }
注意:如果需要处理
.txt之外的其他文本格式,修改对应方案中的后缀匹配规则即可。首次运行前建议先拷贝2-3个测试文件验证清理效果,确认符合预期后再全量执行。
内容的提问来源于stack exchange,提问作者Eric
相关产品推荐
相关产品推荐

