我想确定给定二进制文件中的记录数。文件的分隔符作为用户的输入。总计 我该如何继续?
答案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”。