Por ejemplo, yo podría desear:

tail -f logfile | grep org.springframework | <command to remove first N characters>

Estaba pensando que tr podría tener la capacidad para ello, pero no estoy seguro.

InformationsquelleAutor les2 | 2009-06-09

6 Comentarios

  1. 300

    Uso cut. Por ejemplo. a la franja de los 4 primeros caracteres de cada línea (es decir, inicio el 5 de char):

    tail -f logfile | grep org.springframework | cut -c 5-
    • ¿tiene usted alguna idea de por qué la tubería no funciona? cuando ejecuto esencialmente el comando «cortar» no imprimir los resultados a la salida estándar (stdout) … si sólo tengo que ejecutar ‘tail-f archivo log | cut-c 5-‘ puedo ver los resultados … el problema debe ser con grep estoy usando cygwin FYI gracias
    • ¿qué sucede si no se agrega el último tubo y cortar ? básicamente, si se elimina la última parte de la línea ?
    • que las «colas» del archivo de registro, el filtrado con grep (es decir, todas las líneas con «org.springframework» en ellos se imprimen a stdout) cuando agrego la tubería para «cortar» … se cuelga sin EMBARGO, si elimino el ‘grep’ el ‘corte’ funciona correctamente … estoy pensando que algo anda mal con la forma en que lo estoy usando grep … podría ser un cygwin cosa demasiado
    • oh ya veo…¿por qué el uso de la cola ? acaba de hacer grep org.springframework logfile | cut-c 5 – pero creo que la sed es mejor 🙂
    • porque el ‘-f’ arg a la «cola» hace cola para leer continuamente el archivo … me permite ver las actualizaciones del archivo de registro como se escriben
    • probablemente, a la tarde, pero si grep parece ser el culpable ¿por qué no intercambiar los tubos a: tail -f logfile |cut -c 5-|grep org.springframework ?
    • El problema es, que grep es el búfer de grandes trozos antes de enviarlos a la corte porque se puede ver que no es la escritura de una terminal. Uso grep --line-buffered "org.springframework para resolver el problema.
    • ¿cuál es el char – después de la 5-? por qué

  2. 44
    sed 's/^.\{5\}//' logfile 

    y reemplazar 5 por el número que quieras…se debe hacer el truco…

    EDITAR
    si para cada línea de
    sed 's/^.\{5\}//g' logfile

  3. 23

    Puede utilizar cut:

    cut -c N- file.txt > new_file.txt

    -c: personajes

    file.txt: archivo de entrada

    new_file.txt: archivo de salida

    N-: Caracteres de N para el extremo de la corte y de salida para el nuevo archivo.

    También puede tener otros argumentos como: ‘N’ , N ‘-M’, ‘M’, es decir, el enésimo personaje, n a mth carácter, de la primera a mth carácter respectivamente.

    Esto va a realizar la operación para cada línea del archivo de entrada.

  4. 4
    tail -f logfile | grep org.springframework | cut -c 900-

    iba a quitar la primera 900 caracteres

    cut utiliza 900 – para mostrar la 900a carácter hasta el final de la línea

    sin embargo, cuando me tubo todo esto a través de grep yo no tengo nada

    • «cut-c 1-900» no «quitar la primera 900 caracteres» — se dejará sólo el primero de 900 caracteres. Si desea quitar la primera 900 caracteres, el uso de «cut-c 901-«
    • también es la primera 900 caracteres en cada línea, por @iammichael la respuesta
    • ‘cut-c 900-» va a quitar el primer 899 caracteres, no?
  5. 3

    Creo awk sería la mejor herramienta para esto, ya que se puede filtrar y realizar las funciones de manipulación de cadena en filtrada líneas:

    tail -f logfile | awk '/org.springframework/{print substr($0, 6)}'

    o

    tail -f logfile | awk '/org.springframework/&& sub(/^.{5}/,"",$0)'
  6. 1

    Aquí es simple función, probado en bash. 1er parámetro de la función es de la cadena, 2º parámetro es el número de caracteres a ser despojado

    function stringStripNCharsFromStart {
    echo ${1:$2:${#1}}
    }

    Uso:
    ¿Qué es un comando de unix para la eliminación de los N primeros caracteres de una línea?

    • se puede simplificar esta echo ${1:$2}

Dejar respuesta

Please enter your comment!
Please enter your name here