PowerShell 如何提取txt文件中指定起止标记行之间的内容
提取两个标记行之间内容的最优方案
按使用场景优先级从高到低排序:
1. Linux/macOS 环境(最快单行命令)
直接用awk命令,不需要写完整脚本,秒出结果:
awk '/---Start of Data---/{flag=1;next}/---End of Data---/{flag=0}flag' your_file.txt
原理:遇到起始标记时设置输出标记为1并跳过当前标记行,遇到结束标记时设置输出标记为0,输出标记为1时自动打印当前行,直接得到目标数据。
2. 跨平台通用(Python代码)
兼容性最强,不需要依赖系统自带工具,大文件处理效率高:
# 结果直接打印输出的版本 with open("your_file.txt", "r", encoding="utf-8") as f: is_target = False for line in f: strip_line = line.strip() if strip_line == "---Start of Data---": is_target = True continue if strip_line == "---End of Data---": break if is_target: # 要保留原行换行符就直接print(line, end="") print(line.rstrip("\n"))
注意:不推荐直接读取整个文件后做字符串切割的方案,该方案处理GB级大文件时会占用极高内存,运行效率远低于逐行判断的方案。
3. Windows 原生环境(无需额外安装软件)
用系统自带的PowerShell命令即可实现:
Get-Content "your_file.txt" | ForEach-Object { if ($_ -like "*---Start of Data---*") { $flag = $true } elseif ($_ -like "*---End of Data---*") { $flag = $false } elseif ($flag) { $_ } }
内容的提问来源于stack exchange,提问作者Alex Kurtz
相关产品推荐
相关产品推荐

