es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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

ESTADO DEL SERVICIO:  ssh                     loaded          active          running

Tags:  , ,

Answer

  1. Avatar for 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:

    awk '{ sub(/\.service/, "", $3); printf("ESTADO DEL SERVICIO:  %-25s \t %s \t %s \t %s\n",$1,$2,$3,$4) }'
    

    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ón printf() imprime la salida con la tercera columna modificada.

    Con esta modificación, el script debería producir la salida deseada:

    -------------------------------------------------------------------------------------------
    ESTADO DEL SERVICIO:  cron                    loaded          active          running
    ESTADO DEL SERVICIO:  ssh                     loaded          active          running
    -------------------------------------------------------------------------------------------
    

Comments are closed.