2009-06-09 29 views

Respuesta

206

Use cut. P.ej. para despojar a los 4 primeros caracteres de cada línea (es decir, se inicia el 5 char):

tail -f logfile | grep org.springframework | cut -c 5- 
+0

¿tiene alguna idea de por qué la tubería no funciona? cuando ejecuto esencialmente ese comando, 'cortar' no imprime los resultados para stdout ... si solo ejecuto 'tail -f logfile | corte -c 5- 'Puedo ver los resultados ... el problema debe ser con grep Estoy usando cygwin FYI gracias – les2

+0

¿Qué ocurre si no agrega la última tubería y corte? Básicamente, si eliminas la última parte de la línea? – LB40

+0

"agrieta" el archivo de registro, filtrándolo con grep (es decir, todas las líneas con "org.springframework" en ellas se imprimen en stdout) cuando agrego la tubería a 'cortar' ... cuelga SIN EMBARGO, si elimino 'grep' el 'corte' funciona correctamente ... estoy pensando que algo está mal con la forma en que estoy usando grep ... podría ser algo de cygwin también – les2

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

eliminaría los primeros 900 caracteres

cut utiliza 900- para mostrar el carácter número 900 hasta el final de la línea, sin embargo

cuando tubo de todo esto a través de grep que no entiendo cualquier cosa

+4

"cortar -c 1-900" no va a "remover los primeros 900 caracteres" - - Dejará solo los primeros 900 caracteres.Si desea eliminar los primeros 900 caracteres, utilice "corte -c 901-" – iammichael

+0

y sus primeros 900 caracteres en cada línea, por respuesta de @ iammichael –

30
sed 's/^.\{5\}//' logfile 

y se reemplaza por 5 el número que desea ... que debe hacer el truco ...

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

+0

esto debería ser más bien 'sed' s/^. \ {, 5 \} // 'logfile' – user3719454

12

puede utilizar cut:

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

-c: caracteres

file.txt: archivo de entrada

new_file.txt: archivo de salida

N-: Los personajes de N para poner fin a cortar y la salida al nuevo archivo.

También puede tener otras args como: 'N', 'N-M', '-M' que significa n-ésimo carácter, carácter n-ésimo, primero hasta m-ésimo carácter, respectivamente.

Esto realizará la operación en cada línea del archivo de entrada.

+4

Uso inútil de 'cat',' cortar file.txt -cN-> new_file.txt' funcionará igual de bien – ChrisWue

1

creo awk sería la mejor herramienta para esto, ya que puede tanto filtro y realizar las funciones de manipulación de cadenas necesarias en las líneas filtradas:

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

o

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

Aquí es simple función, probado en bash. Primero parámetro de la función es una cadena, segundo parámetro es el número de caracteres a ser despojado

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

Uso: enter image description here

Cuestiones relacionadas