Count nul delimited items in file
Some options:
tr -cd '\0' | wc -c
tr '\n\0' '\0\n' | wc -l # Generic approach for processing NUL-terminated
# records with line-based utilities (that support
# NUL characters in their lines like GNU ones).
grep -cz '^' # GNU grep
sed -nz '$=' # recent GNU sed, no output for empty input
awk -vRS='\0' 'END{print NR}' # not all awk implementations
Note that for an input that contains data after the last NUL character (or non-empty input with no NUL characters), the tr
approaches will always count the number of NUL characters, but the awk
/sed
/grep
approaches will count an extra record for those extra bytes.
The best method I've been able to think of is using grep -zc '.*'
. This works, but it feels wrong to use grep with a pattern which will match anything.