No sabia si ponerlo aquí o en linux.
Bueno os cuento (como diría el guardián de las estrellas hahaha):
Vereis, estoy haciendo un análisis de logs.
Después de usar grep y cut, ya tengo todo el log casi limpito.
El problama me viene en lo siguiente.
Tengo el fichero de log, y necesito borrar (linea a linea, esto es importante) todo lo que haya a partir del segundo ":"
Ejemplo:
linea 1:
pericodelospalotes : pepitogrillo:larala
linea 2:
pericodelospalotesejemplo : pepitogrilloejemplo:larala
Deberia de quedar:
pericodelospalotes : pepitogrillo
pericodelospalotesejemplo : pepitogrilloejemplo
:larala fuera
¿Sabeis como leches se hacia?
Se que con awk se podia hacer, pero estoy bastante espeso. He buscado en google y en los apuntes que tenía de linux y no me aclaro y me urge :(
Muchas gracias!!
Pues hombre, obviamente con un script se puede hacer jeje pero para que quieres quitar en todas las lineas lo que va despues del segundo punto? y si lo que va despues en algun caso es un parametro importante?. Te recomiendo que lo vallas haciendo tu a mano y que envez de borrar información la vallas poniendo como comentario o bien crees un archivo de respaldo por si lo rompes :rolleyes:
un saludo!
$ cat /etc/passwd | cut -f1,2 -d':'
$ cat /etc/passwd | awk -F': ' '{print $1":"$2;}'
# Y si lo que necesitas son mas de un caracter de delimitador cambia a -F' : '
Muchas gracias -MyX- lo voy a probar y te comento a ver que tal me ha ido.
Exacto mDrinky, eso es, en todas las lineas, lo que va después del segundo ":", tengo que quitarlo.
A mano me pueden dar las uvas, y ni me acoradaba usando awk.
Lo pruebo a ver que tal.
Muchas gracias de nuevo.
-MyX- con
cat /etc/passwd | awk -F': ' '{print $1":"$2;}'
No funciona.
Con el "cut" parece ser que sí.
Hola muchachos, me ha servido perfectamente.
Ahora el problema me viene, que no todas las lineas cumplen con esa condición
las lineas pares en el punto número 9 y en las impares es en el punto numero 8.
Si hago las lineas pares, no hay problema. El problema es con las impares, ya que al ser 8, me machaca más de la cuenta.
Un ejemplo:
1:2:3:4:5:6:7:8:9
Queda:
1:2:3:4:5:6:7:8
Hasta ahí todo bien. Pero cuando hago un:
cat fichero | cut -f1,2,3,4,5,6,7,8 -d':'
Me borra a partir del punto 8 hacia adelante (pero en todas las lineas, no en las impares, por lo cual no me sirve del todo).
Ahora, la pregunta del millón....
¿Hay alguna manera de decirle al "cut" que solamente haga "cut" en las lineas donde contenga la palabra "impar" y que a partir de ahí, solo donde vea la palabra "impar", haga el cut?
Muchas gracias!
cat file | ... | while read line;do
impar="impar"
if grep -q $impar; then
echo $line | cut -f1,2,3 -d':'
else
echo $line | cut -f1,2,3,4 -d':'
fi
done