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.

Cómo obtener el nombre de una función de impresión en awk y su comentario.

Hola ninjas de awk, necesito ayuda. Encontré una solución para imprimir los nombres de las funciones definidas en mi script de shell desde aquí, pero mi problema es que me gustaría que mis funciones también mostraran los comentarios… aquí tienes un ejemplo de cómo están definidas mis funciones.

function1() { # this is a function 1
          command1
        }

function2() { # this is a function 2
          command2
        }

function3() { # this is a function 3
          command3
        }

Entonces, el comando que se proporciona y funciona es este: typeset -f | awk '/ \(\) $/ && !/^main / {print $1}' y la salida será esta:

function1
function2
function3

Pero me gustaría que la salida fuera de esta manera (también sería genial tener 4 espacios entre el nombre de la función y el comentario):

function1    # this is a function 1
function2    # this is a function 2
function3    # this is a function 3

Gracias de antemano.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para modificar el comando proporcionado e incluir los comentarios, puedes usar el siguiente comando awk:

    typeset -f | awk '/^function/ {f=$1} /#.*function/ {print f,"\t",$0}'
    

    Este comando primero busca líneas que comiencen con “function” y guarda el nombre de la función en una variable f. Luego, busca líneas que contengan # y “function” y las imprime junto con el nombre de la función, separados por tabulaciones.

    Esto producirá una salida en el formato deseado:

    function1    # this is a function 1
    function2    # this is a function 2
    function3    # this is a function 3
    

    La indentación de 4 espacios se puede lograr modificando la instrucción print para incluir espacios adicionales si se desea.

Comments are closed.