Ejecuto el siguiente comando:
grep -o "[0-9] errors" verification_report_3.txt | awk '{print $1}'
y obtengo el siguiente resultado:
1
4
0
8
Me gustaría agregar cada uno de los números a una variable de conteo continuo. ¿Hay un revestimiento mágico que alguien pueda ayudarme a construir?
variable=$(grep -o "[0-9] errors" verification_report_3.txt | awk '{ SUM += $1} END { print SUM }')
Esto pone la salida del comando (que es solo el valor de la suma) en la variable llamadavariable
"[0-9]\+ errors"
. Esto coincidirá si tiene una línea que informa> 9 errores.Todo esto también se puede hacer en awk:
fuente
Parece que está utilizando el sistema GNU , por lo que si el soporte de expresiones regulares de Perl está disponible, podría escribir algo como esto:
PD: modifiqué la expresión regular (agregué el cuantificador +) para permitir números> 9.
PD Alternativamente, awk es suficiente (suponiendo que GNU awk ):
fuente
Intente conectar la salida de su grep a
fuente
Yo uso esto:
No es eficiente para listas grandes, pero para la mayoría de mis casos de uso está bien. Por lo general, uso una función de shell para automatizar el proceso, de modo que solo tengo que proporcionar un nombre de archivo:
Siempre puede sustituir el marcador de fin de línea por un separador de elemento específico o una clase de caracteres si sus datos están delimitados de otra manera.
fuente