GNU/Linux >> Linux Esercitazione >  >> Linux

Utilità della shell di Linux:converte un elenco di esadecimali in un elenco di decimali

La risposta di John T è la strada da percorrere per le conversioni esadecimali, ma puoi anche farle in questo modo (che può essere utilizzato anche per altre basi):

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

Dimostrazione:

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

Modifica:

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

L'unico vantaggio rispetto alla risposta di John T è che questa può essere facilmente adattata per convertire altre basi in decimale. Il suo è un po' più veloce.

Questo gawk command sembra essere un po' più veloce della versione della shell di John:

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

È più o meno la stessa velocità del tuo comando Perl. Perché non usarlo semplicemente?

A proposito, l'ultima parte della tua battuta Perl può essere sostituita dal -l opzione:

perl -lpe '$_=hex'

Un'altra nota:in genere la pipeline che mostri nella tua domanda sarebbe scritta come:

util < file1 > file2

o, se cat rappresenta segnaposto, quindi dovrebbero essere usati nomi fittizi:

prog1 < file1 | util | prog2 > file2

allora non ci saranno persone che si lamenteranno degli usi inutili di cat .


Normalmente uso solo printf...

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


Linux
  1. 3 modi per elencare gli utenti in Linux

  2. Come cambiare la shell in Linux

  3. Comando eco di Linux

  4. Comando Linux ls - Elenca file

  5. 12 Esempi di Bash For Loop per gli script della tua shell Linux

16 Esempi di comandi Echo in Linux

Comando sorgente in Linux

Che cos'è la shell in Linux?

Che cos'è Login Shell in Linux?

8 tipi di shell Linux

Converti .txt in .csv nella shell