Salve, ho i seguenti file con stesso numero di righe:
file1
a b c f d 1 2 3 5 4 6 8 s d
f s l k 5 4 8 sa
d f s 5 4 a dd e f ge w s f g h
.
.
.
file2
E voglio sostituire per ogni riga di file1 il suo secondo carattere con il carattere della riga corrispondente di file2, ottenendo:
file3
a
1 c f d 1 2 3 5 4 6 8 s d
f
2 l k 5 4 8 sa
d
3 s 5 4 a dd e f ge w s f g h
.
.
.
Ora non so se mi conviene scrivere uno script in bash (o perl) o un sorgente in C...
Nel primo caso stavo pensando a qualcosa del genere:
codice:
#!/bin/bash
paste -d ' ' file1 fille 2> file3
while read line
do
primo=$(echo "$line" | cut -d' ' -f1)
terzo=$(echo "$line" | cut -d' ' dal terzo al penultimo carattere...)
secondo=$(echo "$line" | cut -d' ' ultimo carattere)
echo "$primo $secondo $terzo" >> fileout
done < file3
In C invece lo pseudo-codice dovrebbe essere:
codice:
apri il file1
apri il file2
while (1)
{
res1=fgets(bufa, 200000, file1);
if( res1==NULL )
break;
metti in a il bufa[0]
metti in b da bufa[2] fino a fine bufa
res2=fgets(bufb, 200000, file2);
if( res2==NULL )
break;
metti in c il bufb[0]
fprintf( fdout ,"%s%s%s\n", a, c,b);
}
Qualche dritta? :master: