【问题标题】:split the file based on header and footer lines根据页眉和页脚行拆分文件
【发布时间】:2022-12-03 16:22:06
【问题描述】:

我有一个结构如下的文本文件:

header
data1 
data2
data3
..
footer
junk
header
data4
data5
...
footer
junk
header
data6
data7
data8
..
footer

我需要找到headerfooter 之间的每个部分并将其保存在另一个文件中。例如文件1应包含:

data1
data2
data3
..

下一个包应该保存为文件2等等。 这似乎是一个常规过程,但我还没有找到解决方案。

我有这个sed查找第一个数据包的命令。

sed -n "/header/,/footer/{p;/footer/q}" file

但我不知道如何在接下来的比赛中重复这一点。也许我应该在将第一个匹配项复制到另一个文件后删除它并重复相同的命令

【问题讨论】:

  • 你试过什么?
  • 我编辑了问题

标签: linux awk sed split text-processing


【解决方案1】:

一种非常天真的方法,编码速度很快,可以改进,但在 awk 中似乎有效:

BEGIN {
    i = 0
}
{
    if ($0 == "header") {
        write = 1
    } else if ($0 == "footer") {
        write = 0
        i = i + 1
    } else {
        if (write == 1) {
            print $0 > "file"i
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多