一次处理10行样本数据

时间:2013-08-20 12:55:27

标签: bash file loops

我想创建一个循环,它将输入 10行输出文件并将其输出到输出文件。并继续在输出文件中添加行而不是写入。

这是一个示例数据:

FilePath    Filename    Probability ClassifierID    HectorFileType  LibmagicFileType

/mnt/Hector/Data/benign/binary/benign-pete/ 01d0cd964020a1f498c601f9801742c1    19  S040PDFv02  data.pdf    PDF document

/mnt/Hector/Data/benign/binary/benign-pete/ 0299a1771587043b232f760cbedbb5b7    0   S040PDFv02  data.pdf    PDF document

然后,我使用它来计算每个唯一文件,并显示每个文件的数量:

cut -f 4 input.txt|sort| uniq -c | awk '{print $2, $1}' | sed 1d

所以最终我只需要帮助制作一个可以运行该行bash的循环,并一次输出10行数据到输出文件

1 个答案:

答案 0 :(得分:1)

如果我理解正确的话,对于每10行的一行,你正试图:

  1. 跳过标题,即块的第一行
  2. 计算字段#4(ClassifierID)出现的次数并输出字段加上计数。
  3. 这是一个可以执行此操作的AWK脚本:

    FNR % 10 != 1 {
        ++count[$4]
    }
    
    FNR % 10 == 0 {
        for (i in count) {
            print i, count[i]
            delete count[i]
        }
    }
    

    讨论

    • FNR % 10 != 1块处理每一行,但行1,11,21,... AKA要跳过的行。该块保持字段数$ 4
    • FNR % 10 == 0块打印出该块的摘要并重置(通过删除)计数
    • 我的脚本不对字段进行排序,因此顺序可能不同。
    • 如果您想计算整个文件,而不只是10个块,请将FNR % 10 == 0替换为END