Necesito para obtener los valores del archivo de registro, los valores pueden ser diferentes y la necesidad de obtener.

ejemplo de cadena:

Tests run: 1042, Failures: 0, Errors: 0, Skipped: 0

yo intente con:

cat log.log | grep '^Test run:' | sed -e 's/^Test run: //'

pero me sale:
1042, Fallos: 0 Errores: 0, Skipped: 0

necesito 4 comandos que el resultado fue como

primer comando (pruebas de ejecución)

1042

segundo comando (Fallas)

0

tercer comando (Errores)

0

cuarto commad (Omitido)

0

6 Comentarios

  1. 7

    Puede utilizar los siguientes cuatro comandos para obtener los valores de Tests run, Failures, Errors, y Skipped respectivamente:

    cat log.log | sed 's/Tests run: \([0-9]\+\).*//g'
    cat log.log | sed 's/.*Failures: \([0-9]\+\).*//g'
    cat log.log | sed 's/.*Errors: \([0-9]\+\).*//g'
    cat log.log | sed 's/.*Skipped: \([0-9]\+\).*//g'
  2. 2
    grep '^Tests run:' <<END | grep -o '[0-9]\+'
    Tests run: 1042, Failures: 0, Errors: 0, Skipped: 0
    junk
    Tests run: 1, Failures: 2, Errors: 3, Skipped: 4
    END

    salidas

    1042
    0
    0
    0
    1
    2
    3
    4
  3. 1

    No estoy seguro de si esto va a ser lo que queremos o no, pero suponiendo que las líneas que usted está buscando va a ser en este formato:

    Tests run: <integer>, Failures: <integer>, Errors: <integer>, Skipped: <integer>

    El siguiente podría funcionar para usted:

    sed -e 's/^Tests run: \([0-9]*\), Failures: \([0-9]*\), Errors: \([0-9]*\), Skipped: \([0-9]\).*$/,,,/'

    Dada la siguiente entrada en un archivo llamado prueba.registro de

    Tests run: 1042, Failures: 0, Errors: 0, Skipped: 0
    Tests run: 12, Failures: 0, Errors: 0, Skipped: 0
    Tests run: 104, Failures: 1, Errors: 3, Skipped: 4

    Ejecución:

    cat test.log | sed -e 's/^Tests run: \([0-9]*\), Failures: \([0-9]*\), Errors: \([0-9]*\), Skipped: \([0-9]\).*$/,,,/'

    Produciría la siguiente salida:

    1042,0,0,0
    12,0,0,0
    104,1,3,4

    Usted podría, por supuesto, modificar el resultado final por jugar con el /\1,\2,\3,\4/parte de la sed de expresión.

  4. 1

    Algo como esto:

    sed -n "s/.*Tests run: \([0-9]*\),.*//p"
    sed -n "s/.*Failures: \([0-9]*\),.*//p"
    sed -n "s/.*Errors: \([0-9]*\),.*//p"
    sed -n "s/.*Skipped: \([0-9]*\)$//p"
  5. 0

    ¿Te refieres a algo como esto?

    sed -rn 's/^Tests run:\s*//;s/,[^:]+:\s*/\n/gp' log.log

    Resultado:

    1042
    0
    0
    0
  6. 0

    Esto podría funcionar para usted:

    echo "Tests run: 1042, Failures: 0, Errors: 0, Skipped: 0" | 
    sed '/^Tests/{s/[^0-9,]//g;y/,/\n/;}'
    1042
    0
    0
    0

Dejar respuesta

Please enter your comment!
Please enter your name here