awk 将一个文件拆分为 n 个文件,每个文件都有其标题

Posted

技术标签:

【中文标题】awk 将一个文件拆分为 n 个文件,每个文件都有其标题【英文标题】:Awk splitting one file into n files each one with its header 【发布时间】:2018-10-05 02:40:48 【问题描述】:

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

示例原始文件:

AAABBB12042018

 Jon238444kdhsljdjd7

 Math37378338kdjdkske

AAABBB14042018

 Ash81272722mddnd

 Jay81727272msnsms

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

Jon238444kdhsljdjd

Math37378338kdjdkske

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

Ash81272722mddnd

Jay81727272msnsms

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

【问题讨论】:

我建议看看awk “AAABBB”部分是否不变?我们怎么知道它是标题?是不是缺少前导空格? Gleen 它是一个常数,这意味着它的标题正是那个字符串 【参考方案1】:

这应该可以...

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

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

【讨论】:

以上是关于awk 将一个文件拆分为 n 个文件,每个文件都有其标题的主要内容,如果未能解决你的问题,请参考以下文章

awk 拆分更多列并打印第一个单词

linux shell 中 awk 分隔符

根据分隔符将一个文件拆分为多个文件

根据列将大型 csv 文件拆分为多个文件

根据单列中的值拆分大文件(AWK)

PowerPoint 中单个拆分文件的文件名