如何确定给定分隔符的二进制文件中的记录数

如何确定给定分隔符的二进制文件中的记录数

我想确定给定二进制文件中的记录数。文件的分隔符作为用户的输入。总计 我该如何继续?

答案1

LC_ALL="C" awk -v RS="${Delim}" 'END { print NR; }' < filename

RS 是记录分隔符,并且是正则表达式,因此错误(即无效的正则表达式)将使脚本失败。

LC_ALL="C" 是临时导出,以避免二进制中的任意字节值可能被解释为 UTF-8 编码的问题。

但是,我有兴趣了解任何指定的分隔符如何在二进制文件中工作,其中每个整数、浮点数或双精度数中的任何单个字节的范围可以从 0x00 到 0xFF。

您还可以删除所有不是分隔符的字节,然后计算剩下的字节。在这种情况下,Delim 不是一个模式,但它可以是一组字符,可能需要根据手册页进行转义。

tr -cd "${Delim}" < filename | wc -c

请注意,tr 中的“set”不是多字节条目:“ab”测试“a”或“b”,而不是“ab”。

相关内容