12 Último

Script Bash

      • 597
      • mensajes
      • miembro desde
      • 05/10/03
    16/11/2003
    #1 Script Bash

    Buenas pipol!!!

    Estoy tratando de hacer lo siguiente con un script en bash. Tengo 2 o mas archivos de texto y los quiero meter en uno solo de la siguiente manera:

    archivo a:
    1
    2
    3

    archivo b:
    a
    b
    c

    archivo resultante:
    1 a
    2 b
    3 c

    A alguien se le ocurre como hacer esto en 2 o 3 lineas ??
    En realidad son variables.
    Estuve tratando de ver el sed pero no entiendo el man, seguro que con el sed se puede hacer pero no encontre la manera todavia.
    Gracias!!

  1. ¿Este tema te pareció interesante? Compártelo!

    ¿No es lo que buscabas? Intenta buscar un tema similar

    15 comentarios / 3122 Visitas

      • 597
      • mensajes
      • miembro desde
      • 05/10/03
    17/11/2003
    #2

    Otra cosa...
    Alguien sabe como redireccionar la salida a un archivo y a la vez que salga tambien por stdout.
    Seria duplicar la salida...
    Gracias

      • 14,189
      • mensajes
      • miembro desde
      • 19/10/02
    17/11/2003
    #3
    Publicado por ¬|-@Eveready

    Alguien sabe como redireccionar la salida a un archivo y a la vez que salga tambien por stdout.

    Te referís a esto?

    #echo ${MODOlu:=SWMMODE} 1> /dev/null 2>&1
      • 14,189
      • mensajes
      • miembro desde
      • 19/10/02
    17/11/2003
    #4 Re: Script Bash
    Publicado por ¬|-@Eveready
    Buenas pipol!!!

    Estoy tratando de hacer lo siguiente con un script en bash. Tengo 2 o mas archivos de texto y los quiero meter en uno solo de la siguiente manera:

    archivo a:
    1
    2
    3

    archivo b:
    a
    b
    c

    archivo resultante:
    1 a
    2 b
    3 c

    A alguien se le ocurre como hacer esto en 2 o 3 lineas ??
    En realidad son variables.
    Estuve tratando de ver el sed pero no entiendo el man, seguro que con el sed se puede hacer pero no encontre la manera todavia.
    Gracias!!
    .

    Uuuf , lo podés hacer con sed , pero sinceramente no me acuerdo como , después me fijo y te tiro el dato.

    También se puede hacer con awk , pegale una mirada.
      • 597
      • mensajes
      • miembro desde
      • 05/10/03
    17/11/2003
    #5
    Alguien sabe como redireccionar la salida a un archivo y a la vez que salga tambien por stdout.
    A ver si me explico mejor.
    Por ej:
    echo $lala
    echo $lala > lala.txt

    Estas dos lineas en una.

    Lo de
    echo ${MODOlu:=SWMMODE} 1> /dev/null 2>&1
    no estarias mandando el stderr al stdout ?? o entendi mal?
      • 449
      • mensajes
      • miembro desde
      • 10/03/02
    19/11/2003
    #6

    supongamos 3 archivos:

    primero
    1
    2
    3

    segundo
    a
    b
    c


    Te hice un pequeño script en bash combinado con el comando sed:

    #!/bin/bash
    #creado por drkknnja
    #se permite su uso y difusion a todos los psicomiembros.

    var1=`sed -n -e '1,1p' primero`
    var2=`sed -n -e '1,1p' segundo`
    var3=`echo $var1 $var2`

    #graba la suma de las dos variables
    #en el archivo destino

    echo $var3 > tercero

    #cuenta cantidad de registros
    n=`cat primero|wc -l`

    #bucle a partir del 2do. registro

    let x=2
    while let "$x <= $n"
    do
    var1=`sed -n -e "${x},${x}p" primero`
    var2=`sed -n -e "${x},${x}p" segundo`
    var3=`echo $var1 $var2`
    echo $var3 >> tercero
    let x=$x+1
    done


    Despues de ejecutar el script te va a quedar un tercer archivo

    tercero
    1 a
    2 b
    3 c


    Bueno, espero ke despues de tanto esfuerzo te sirva (estuve como media hora por las comillas, el signo $ y los corchetes de la variable x, ya que no funcionaba con comillas simples ni con barra invertida, pero al final me funcionó)
    Lastima ke se muy poco de Perl, porque es un lenguaje especial para este tipo de cosas.

    Enjoy it !!! ...

    PD: Ponete las pilas ... Eveready .jajajajaj

    salu2

      • 597
      • mensajes
      • miembro desde
      • 05/10/03
    19/11/2003
    #7

    GRACIAS MASTER!!!!!!!!!!!!!
    Ahora lo pruebo!!!

      • 449
      • mensajes
      • miembro desde
      • 10/03/02
    19/11/2003
    #8

    Y... anduvo???

      • 597
      • mensajes
      • miembro desde
      • 05/10/03
    20/11/2003
    #9

    Bueno, lo modifique algo, quedo asi:

    cont=`echo "$INBPS" | wc -l`
    a=1
    /usr/bin/echo "\\n--------------------------------------------------------------------\\nLine Protocol\\tInput Bitrate\\tOutput Bitrate\\tDescripcion\
    \n--------------------------------------------------------------------"
    while [ $a -le $cont ]; do
    test=`echo "$LINEPROT" | sed -n -e "${a},1p"`
    if [ $test = up ]; then
    drknnja1=`echo "$IFDESC" | sed -n -e "${a},1p"`
    drknnja2=`echo "$LINEPROT" | sed -n -e "${a},1p"`
    drknnja3=`echo "$INBPS" | sed -n -e "${a},1p"`
    drknnja4=`echo "$OUTBPS" | sed -n -e "${a},1p"`
    todo=`/usr/bin/echo "$drknnja2\\t$drknnja3\\t$drknnja4\\t$drknnja1 " | awk '{print $1"\t\t"$2"\t\t"$3"\t\t"$4}'`
    echo "$todo"
    fi
    a=`expr $a + 1`
    done

    Le saque la primer mitad porque la variable $LINEPROT siempre va a tener la misma cantidad de lineas que las demas.
    En honor al creador se definieron las variables con su nombre

      • 597
      • mensajes
      • miembro desde
      • 05/10/03
    29/11/2003
    #10
    Alguien sabe como redireccionar la salida a un archivo y a la vez que salga tambien por stdout.
    Ya que nadie lo sabe....TEE !!!!!!
    Esas cosas a las que nunca les damos bola....
12 Último