You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BASH按条件拆分文件:将input.txt拆分为day.txt等目标文件

用AWK快速实现分类文件拆分

针对你需要按>xxx_前缀拆分input.txt的需求,用AWK脚本是最简洁高效的方案,不需要复杂的编程语言,一行命令就能搞定!

核心思路

遍历input.txt的每一行:

  • 遇到以>开头的行时,提取>之后的前缀(比如day、month)作为目标文件名的基础
  • 把当前行直接追加到对应前缀的txt文件中,完美匹配你要的“对应类别标题行+内容”的需求

具体实现

方法1:单行命令直接执行

打开终端,切换到input.txt所在目录,运行以下命令:

awk '/^>/ {
    # 去掉行首的>,用下划线分割出类别名
    split(substr($0, 2), parts, "_")
    target_file = parts[1] ".txt"
}
{
    # 将当前行追加到目标文件
    print >> target_file
    # 关闭文件避免句柄耗尽
    close(target_file)
}' input.txt

方法2:写成AWK脚本文件(更易维护)

创建一个名为split_categories.awk的文件,内容如下:

# 匹配以>开头的行,确定目标文件
/^>/ {
    # 移除开头的>,比如把">day_1 ABC..."变成"day_1 ABC..."
    line_without_gt = substr($0, 2)
    # 用下划线分割,取第一部分作为类别名
    split(line_without_gt, category_parts, "_")
    target_filename = category_parts[1] ".txt"
}

# 对所有行执行:写入目标文件并关闭
{
    print >> target_filename
    close(target_filename)
}

然后运行:

awk -f split_categories.awk input.txt

效果验证

执行后,你会得到完全符合预期的文件:

  • day.txt内容:

day_1 ABC DEF GHI
day_2 JKL MNO PQR
day_3 STU VWX YZA

  • month.txt内容:

month_1 BCD EFG HIJ
month_2 KLM NOP QRS

如果input.txt里新增>year_1 XYZ 123这类行,脚本会自动生成year.txt并写入对应内容,完全适配扩展的类别。

注意事项

  • 确保你的系统安装了AWK(Linux/macOS默认自带,Windows可以通过Git Bash或WSL运行)
  • 如果目标文件已经存在,命令会追加内容而不是覆盖;如果需要覆盖,可在运行前先删除对应的txt文件,或者在脚本里添加首次写入时清空文件的逻辑

内容的提问来源于stack exchange,提问作者user9467855

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:38:03