GNU/Linux >> Tutoriales Linux >  >> Linux

Utilidades de shell de Linux:convierta una lista de hexadecimales en una lista de decimales

La respuesta de John T es el camino a seguir para las conversiones hexadecimales, pero también puede hacerlo de esta manera (que también puede usarse para otras bases):

$ hexval=0x59999
$ hexval=${hexval#*x}
$ echo $((16#$hexval))
367001

Demostración:

$ echo $((2#1011010))
90
$ echo $((8#1776))
1022
$ echo $((23#mmmmm))
6436342

Editar:

#!/bin/bash
base=16
while read -r val
do
    val=${val#*x}
    echo $(($base#$val))
done < inputfile > outputfile

La única ventaja sobre la respuesta de John T es que esta se puede adaptar fácilmente para convertir otras bases a decimal. El suyo es un poco más rápido.

Este gawk El comando parece ser un poco más rápido que la versión de shell de John:

gawk --non-decimal-data '{printf "%d\n",$1}' inputfile > outputfile

Tiene aproximadamente la misma velocidad que su comando Perl. ¿Por qué no simplemente usarlo?

Por cierto, la última parte de tu frase de Perl se puede reemplazar por el -l opción:

perl -lpe '$_=hex'

Otra nota:por lo general, la canalización que muestra en su pregunta se escribiría como:

util < file1 > file2

o, si cat representa marcadores de posición, entonces se deben usar nombres ficticios:

prog1 < file1 | util | prog2 > file2

entonces no tendrás gente quejándose de los usos inútiles de cat .


Normalmente solo uso printf...

while read x;do printf '%d\n' $x;done <file


Linux
  1. ¿Cómo convertir caracteres hexadecimales a ASCII en el shell de Linux?

  2. ¿Cómo convertir la salida de shell de Linux a HTML?

  3. Enviar un correo desde un script de shell de Linux

  4. ¿Cómo insertar una nueva línea en el script de shell de Linux?

  5. ¿Cómo invertir una lista de palabras en una cadena de shell?

16 ejemplos de comandos de eco en Linux

Comando fuente en Linux

¿Qué es el Shell en Linux?

¿Qué es Login Shell en Linux?

Ejemplos de comandos echo en Linux

8 tipos de shells de Linux