[shell script] ayuda con script, :(

Iniciado por dark_fidodido, 7 Septiembre 2009, 13:09 PM

0 Miembros y 2 Visitantes están viendo este tema.

kevlar


Ups.

Puedes insertar un tabulador print /t pero si el tamaño de los campos no es constante se descuadra de igual manera.

Con algo de AWK se puede hacer especificando el ancho del campo. Creo que tienes que crear un archvivo con comados de AWK para que te reconozca el printf. Hay algunas variables interesantes como FS, NR, NF

http://www.loquefaltaba.com/documentacion/Manual_Awk_castellano.pdf
printf "%4s", "cadena"


Por otra parte si lo que quieres es insertar renglones print /n


dark_fidodido

jop, no me sirve ninguna de las 2 formas
a ver si esto vale
for blucle1;do
   for bucle2;do
      if bucle1==bucle2;then
       el print que yo quiero >> archivo
      fi
    done
done

¿que podria añadir aqui para que cuando la condicion del "if" sea verdadera, volviera al principio del 1º for, y con los incrementos de las variables de cada bucle for hechos?         

kevlar

Es muy general tu código y tus preguntas  :-\

Trata de ser más especifico, de otra forma lo único que podemos hacer es imaginar que es lo que quieres. En tu última pregunta la respuesta la sabes solo tu, ya que tu estas tratando de resolver el problema.

Desconocemos como son tus archivos, número de registros (iguales o diferentes), que campos quieres integrar en el nuevo archivo, que campos deben estar en blanco etc, etc, y un largo etc.


kevlar

#13
Aquí utilice el pipe como separador de campo puede ser el [ESPACIO] tradicional. Estoy oxidado con el AWK así que luego posteo lo de la alineación.   ;D


armando@armando-desktop:~$ more archivo1.txt
campo1|test|prueba|camino
roca|telefono|calles|primer
vidrio|plastico|papel|mesa
armando@armando-desktop:~$ more archivo2.txt
pared|corbata|zapatos|anillo
muro|traje|manos|ventana
cabello|copas|cuadro|silla

armando@armando-desktop:~$ ./lista.sh
campo1|prueba|zapatos|anillo
roca|calles|manos|ventana
vidrio|papel|cuadro|silla

armando@armando-desktop:~$ more lista.sh
REG1=`wc -l archivo1.txt | awk '{print $1}'`
REG2=`wc -l archivo2.txt | awk '{print $1}'`
`> nuevo.txt`
for (( i=0; i<$REG1; i++ ))
do
let CAB=$i+1
  COL1ARCH1=`head -$CAB archivo1.txt |tail -1 | cut -d '|' -f 1`
  COL2ARCH1=`head -$CAB archivo1.txt |tail -1 | cut -d '|' -f 3`
  COL1ARCH2=`head -$CAB archivo2.txt |tail -1 | cut -d '|' -f 3`
  COL2ARCH2=`head -$CAB archivo2.txt |tail -1 | cut -d '|' -f 4`
  echo $COL1ARCH1"|"$COL2ARCH1"|"$COL1ARCH2"|"$COL2ARCH2 >> nuevo.txt
done



LISTO.  Al copiar y pegar se descuadra en el post, pero en la consola aparecen espaciados los campos.

armando@armando-desktop:~$ awk -f lista.awk nuevo.txt
campo1     prueba     zapatos    anillo    
roca           calles       manos      ventana  
vidrio         papel        cuadro      silla    

armando@armando-desktop:~$ more lista.awk
BEGIN{FS="|"}

{printf"%-10s %-10s %-10s %-10s\n",$1,$2,$3,$4}

END{}

armando@armando-desktop:~$


-----------------Por cierto ¿Como inserto una imagen?


dark_fidodido

#14
Gracias ya lo solucioné con tail y cut ^^
Sabeis como puedo sustituir un parámetro por otro o borrarlo de las lineas de un documento??
o como borrar el 1º caracter de cada linea???
es lo unico k me falta para mi script!!!
jejje
Gracias de nuevo a todos por vuestra ayuda

modifico:
ya solucione lo de borrar el 1º caracter ^^
cut -c 2-20 archivo >> nuevoarchivo

modifico:
sustituir un caracter por otro:
en mi caso un caracter en blaco por un "."

tr [" ]" . < archivo.txt >> archivonuevo.txt


gracias a todos
ya se puede cerrar el post!!!!!!!!