Skip to main content
added 20 characters in body
Source Link
Janis
  • 14.4k
  • 4
  • 28
  • 42

Here is one possibility, a compact solution which is making use of read's capability to restrict the amount of read characters:

c=0 while IFS= read -n16 -r line do len=${#line} ((len<16)) && { ((len++)) ; line+=$'\n' ;} printf "%08x " $c for ((i=0; i<len; i++)) do printf " %02x" "'${line:i:1}" done printf " %*s %s\n" $((50-3*len)) "" "'${line//[^[:print:]]/.}'" ((c+=len)) done 

Here is one possibility which is making use of read's capability to restrict the amount of read characters:

c=0 while IFS= read -n16 -r line do len=${#line} ((len<16)) && { ((len++)) ; line+=$'\n' ;} printf "%08x " $c for ((i=0; i<len; i++)) do printf " %02x" "'${line:i:1}" done printf " %*s %s\n" $((50-3*len)) "" "'${line//[^[:print:]]/.}'" ((c+=len)) done 

Here is one possibility, a compact solution which is making use of read's capability to restrict the amount of read characters:

c=0 while IFS= read -n16 -r line do len=${#line} ((len<16)) && { ((len++)) ; line+=$'\n' ;} printf "%08x " $c for ((i=0; i<len; i++)) do printf " %02x" "'${line:i:1}" done printf " %*s %s\n" $((50-3*len)) "" "'${line//[^[:print:]]/.}'" ((c+=len)) done 
Source Link
Janis
  • 14.4k
  • 4
  • 28
  • 42

Here is one possibility which is making use of read's capability to restrict the amount of read characters:

c=0 while IFS= read -n16 -r line do len=${#line} ((len<16)) && { ((len++)) ; line+=$'\n' ;} printf "%08x " $c for ((i=0; i<len; i++)) do printf " %02x" "'${line:i:1}" done printf " %*s %s\n" $((50-3*len)) "" "'${line//[^[:print:]]/.}'" ((c+=len)) done