Bash 一次处理10行样本数据
我想做一个循环,将输入文件的10行输出到输出文件。并继续向输出文件添加行,而不是过度写入 这是一个示例数据:Bash 一次处理10行样本数据,bash,file,loops,Bash,File,Loops,我想做一个循环,将输入文件的10行输出到输出文件。并继续向输出文件添加行,而不是过度写入 这是一个示例数据: FilePath Filename Probability ClassifierID HectorFileType LibmagicFileType /mnt/Hector/Data/benign/binary/benign-pete/ 01d0cd964020a1f498c601f9801742c1 19 S040PDFv02 data.pdf P
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行数据输出到一个输出文件如果我理解正确,对于每一个10行的块,您都在尝试:
FNR % 10 != 1 {
++count[$4]
}
FNR % 10 == 0 {
for (i in count) {
print i, count[i]
delete count[i]
}
}
讨论
块处理每一行,但第1、11、21行。。。你想跳过的行。此块保留字段$4的计数FNR%10!=1
块打印出该块的摘要,并重置(通过删除)计数FNR%10==0
- 我的脚本没有对字段进行排序,因此顺序可能不同
- 如果要对整个文件进行计数,而不仅仅是10秒的块,则将
替换为FNR%10==0
END
split-l10 infle
,然后分别处理每个splitfile。似乎您想消除头行,它出现在第1、11、21行。。。然后,进行一些处理,是否正确?当我尝试运行它时,会出现以下错误:awk 2script.awk awk:cmd。第1行:意外标记您是否尝试过awk-f 2script.awk
?不要忘记-f
标志。