Linux下如何从给定文件中按Group分组导出指定段落内容
方案1:AWK 命令行快速处理(适用于Linux/macOS环境)
直接执行以下命令即可批量导出所有分组,每个分组生成独立文件:
awk '/^Group /{close(out); out="group_" substr($2,1,length($2)-1) ".txt"} {if($0!="End_section") print > out}' 你的目标文件名.txt
逻辑说明:
- 匹配到以
Group开头的行时,自动关闭上一个分组的输出文件,提取分组编号生成新的输出文件名(如Group 1对应group_1.txt) - 遇到
End_section行直接跳过不写入文件 - 其余内容全部写入当前分组对应的文件,自动适配文件末尾无结束标识的场景
- 不需要空分组文件的话,可以在命令后追加
&& rm -f $(grep -l "End_section" group_*.txt)过滤空文件
方案2:Python 跨平台自定义实现
需要灵活调整导出规则(比如仅导出指定分组、自定义文件名格式)的话,用以下脚本即可:
# 读取原始文件 with open("你的目标文件名.txt", "r", encoding="utf-8") as f: lines = f.readlines() current_group = None group_dict = {} for line in lines: line = line.rstrip("\n") # 识别分组起始行 if line.startswith("Group "): current_group = line.strip(":") group_dict[current_group] = [] continue # 跳过空分组结束标记 if line == "End_section": continue # 写入当前分组内容 if current_group: group_dict[current_group].append(line) # 导出所有分组,可修改为指定分组列表如["Group 1", "Group 4"] for group_name, content_list in group_dict.items(): file_name = f"{group_name.replace(' ', '_')}.txt" with open(file_name, "w", encoding="utf-8") as f: f.write("\n".join(content_list))
逻辑说明:
- 先逐行解析原文件,把所有分组内容存入字典,支持在导出前对内容做二次加工
- 自动处理文件末尾无结束标识的情况,读到文件最后一行自动结束
- 跨平台支持Windows、Linux、macOS运行
内容的提问来源于stack exchange,提问作者user3835935
相关产品推荐
相关产品推荐

