首页 > 解决方案 > awk 将一个文件分成 n 个文件,每个文件都有它的标题

问题描述

我很难学习如何根据标头创建 2 个输出文件,以及是否可能使用标头中的信息命名...

示例原始文件:

AAABBB12042018

 Jon238444kdhsljdjd7

 Math37378338kdjdkske

AAABBB14042018

 Ash81272722mddnd

 Jay81727272msnsms

第一个基于标题命名的文件:file-12042018

Jon238444kdhsljdjd

Math37378338kdjdkske

基于标题命名的第二个文件:file-14042018

Ash81272722mddnd

Jay81727272msnsms

我不介意保留标题,我的问题是如何根据标题中的字符串处理多个输出名称

标签: awksplit

解决方案


这应该做...

$ awk '/^AAABBB/{sub(/^AAABBB/,"file-"); fn=$0; next} {print > fn}' file

如果该行以此标记开头,请将其替换为文件前缀并将行打印到该文件。


推荐阅读