duda grep fichero shellscript linux

Iniciado por CrÄsH, 26 Octubre 2010, 04:03 AM

0 Miembros y 1 Visitante están viendo este tema.

CrÄsH

Buenas!

Tengo un fichero($SALIDA) lleno en el que me gustaria hacerle grep A $SALIDA > $SALIDA
Al hacer esto me queda el fichero vacio. Como se haria correctamente?

Gracias
~~~~~~~~~~~~~~~~

Shell Root

mmm así,
Código (bash) [Seleccionar]
shellroot@alex-laptop:~/Escritorio$ ls | grep PoC > PoC.txt
shellroot@alex-laptop:~/Escritorio$


PoC.txt
Código (PoC) [Seleccionar]
PoC.cpp
PoC.php
PoC.txt
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

leogtz

Se debe a que no haya lo que buscas, además de que con ">" estás truncando el contenido del archivo.

Código (bash) [Seleccionar]
leo@leo-desktop:~/Escritorio$ cat file.txt
Leonardo
Gutierrez
Ramirez
c++
leo@leo-desktop:~/Escritorio$ cat file.txt | grep -i "^c+.*$"
c++
leo@leo-desktop:~/Escritorio$ cat file.txt | grep -i "^c+.*$" >> "file.txt"
leo@leo-desktop:~/Escritorio$ cat file.txt
Leonardo
Gutierrez
Ramirez
c++
c++
leo@leo-desktop:~/Escritorio$


Código (bash) [Seleccionar]

#!/usr/bin/bash
exec 6>&1
exec > "salida.txt"
cat "file.txt" | grep -i "c++"
exec 1>&6 6>&-
cat "file.txt"
exit 0


Perfecto, quisiera que se pusieran más dudas sobre shell script, así practicamos todos este maravilloso lenguaje.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

CrÄsH

Gracias por vuestras respuestas pero no es eso lo que intentava hacer.
Lo que quiero es modificar el mismo archivo al que se hace el grep.

ALgun idea?

pD: Leo Gutiérrez tu codigo es un buen ejemplo de lo que quiero hacer, pero en lugar de >> quiero >.
~~~~~~~~~~~~~~~~

CrÄsH

Buenas

Me gustaria hacer esto:

VAR= '> log.txt'

ls -lia | grep 343 $VAR


Creo que lo que esta mal es  la asignacion a VAR, como irian las comillas??


Gracias
~~~~~~~~~~~~~~~~

CrÄsH

~~~~~~~~~~~~~~~~

leogtz

A ver, si tengo un archivo con el siguiente contenido:

leo@leo-desktop:~/Escritorio$ cat file.txt
Leo
perro
gato
bash
c++
perl

leo@leo-desktop:~/Escritorio$


y hago:

leo@leo-desktop:~/Escritorio$ grep -i "bash" file.txt > file.txt
leo@leo-desktop:~/Escritorio$ cat file.txt
leo@leo-desktop:~/Escritorio$



Se pierde el contenido, por lo que tienes que hacer:

leo@leo-desktop:~/Escritorio$ cat file.txt
Leo
perro
gato
bash
c++
perl

leo@leo-desktop:~/Escritorio$ sed -ni "/bash/p" file.txt
leo@leo-desktop:~/Escritorio$ cat file.txt
bash
leo@leo-desktop:~/Escritorio$
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Shell Root

@Leo WTF! Creo que lo que necesita es una variable con el nombre del archivo, al que se va a volcar el contenido del ls -lia.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

leogtz

Entonces estoy perdido, que se explique mejor.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Shell Root

Seh, es algo así, pero ahí si no se como hacedlo en bash. XD

Código (python) [Seleccionar]
#!/usr/bin/python
import os

#Ejecución de comandos
sFile = 'PoC.txt'
os.system("ls -lia | grep 343 >" , sFile)


Algo así.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.