Columna sin los últimos caracteres con awk y printf
Tengo este script:
#!/bin/bash
f_status () {
systemctl list-units | grep $1 | awk ‘{ printf(“ESTADO DEL SERVICIO: %-25s \t %s \t %s \t %s\n”,$1,$2,$3,$4) }’
}
f_line() {
echo “——————————————————————————————-”
}
echo “”
f_line
f_status “cron”
f_status “ssh”
f_line
Este script me devuelve el siguiente resultado:
ESTADO DEL SERVICIO: cron.service loaded active running
ESTADO DEL SERVICIO: ssh.service loaded active running
y busco cómo eliminar “.service” de la tercera columna.
He intentado con substr($i, 0, -8) y ${1:-8}
¿Alguien tiene alguna idea de cómo eliminar 8 caracteres desde el final para que se vea así?
ESTADO DEL SERVICIO: cron loaded active running
davy.ai
Para eliminar la cadena “.service” de la tercera columna, puede modificar el comando awk dentro de la función f_status de esta manera:
La función
sub()
se utiliza para sustituir la cadena “.service” por una cadena vacía en la tercera columna (usando la expresión regular/\.service/
), y luego la funciónprintf()
imprime la salida con la tercera columna modificada.Con esta modificación, el script debería producir la salida deseada: