Estoy buscando una forma simple de canalizar el resultado de md5sum
otro comando. Algo como esto:
$echo -n 'test' | md5sum | ...
Mi problema es que md5sum
no solo genera el hash de la cadena, sino también una exageración, lo que indica que la entrada provino de stdin. Revisé el archivo man y no encontré ningún indicador para controlar la salida.
bash
ubuntu
shell-script
hashsum
nmat
fuente
fuente
echo -n
cuando se desconocen los datos de texto. Usar en suprintf '%s' "$DATA"
lugar. A diferenciaecho -n "$DATA"
, funcionará cuandoDATA="-n"
(entre otros ejemplos).Respuestas:
Puedes usar el comando cortar ; le permite cortar un cierto rango de caracteres / bytes de cada línea de entrada. Como el hash MD5 tiene una longitud fija (32 caracteres), puede usar la opción
-c 1-32
para mantener solo los primeros 32 caracteres de la línea de entrada:Alternativamente, puede indicar
cut
dividir la línea en cada espacio y mostrar solo el primer campo: (tenga en cuenta las comillas alrededor del espacio)Vea la página de manual de corte para más opciones.
fuente
-d
+-f
para quemd5sum
pueda ser reemplazado consha1sum
o lo que sea más tarde.awk
también funciona:echo -n test | md5sum | awk -F" " '{print $1}'
oawk -F" " '{print $1}' <(echo -n test | md5sum)
-F" "
opción paraawk
es muy extraña de ver, dado que es la opción predeterminada paraawk
.Puedes
cut
hacerlo:Aquí,
-d' '
elige el espacio como delimitador y-f1
solicita el primer campo (antes de un delimitador).fuente
Usar awk también funciona bien:
Otra forma es hacer una subcadena. Como sabe que el hash md5 es una cadena con 32 caracteres, puede usar:
Son solo manipulaciones de cuerdas, ¡así que tienes la opción!
fuente