Estoy buscando una forma simple de canalizar el resultado de md5sumotro comando. Algo como esto:
$echo -n 'test' | md5sum | ...
Mi problema es que md5sumno 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 -ncuando 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-32para mantener solo los primeros 32 caracteres de la línea de entrada:Alternativamente, puede indicar
cutdividir 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+-fpara quemd5sumpueda ser reemplazado consha1sumo lo que sea más tarde.awktambién funciona:echo -n test | md5sum | awk -F" " '{print $1}'oawk -F" " '{print $1}' <(echo -n test | md5sum)-F" "opción paraawkes muy extraña de ver, dado que es la opción predeterminada paraawk.Puedes
cuthacerlo:Aquí,
-d' 'elige el espacio como delimitador y-f1solicita 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