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!! - .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. - A ver si me explico mejor.Alguien sabe como redireccionar la salida a un archivo y a la vez que salga tambien por stdout.
Por ej:
echo $lala
echo $lala > lala.txt
Estas dos lineas en una.
Lo deno estarias mandando el stderr al stdout ?? o entendi mal?echo ${MODOlu:=SWMMODE} 1> /dev/null 2>&1 -
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 -
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
