2014-07-07 3 views
0

J'ai une exigence comme celle-ci. J'utilise linuxcombinant les fichiers texte dans un fichier texte

J'ai un ensemble de fichiers texte comme text1.txt ,text2.txt, text3.txt. maintenant je combine en un seul fichier texte final.

Text1.txt

1  
NULL  
NULL  
4 

text2.txt

1  
2  
NULL  
4 

text3.txt

a  
b  
c  
d 

J'utilise le fol commande Lowing:

paste -d ' ' text1.txt text2.txt text3.txt >> text4.txt 

Je reçois le:

text4.txt

1 1 a 
2 b  
c 
4 4 d 

mais je veux que la sortie suivante

text4.txt

1 1 a 
NULL 2 b 
NULL NULL c 
4 4 d 

NOTE: - NULL signifie l'espace

je passe cette text4 à une autre boucle comme entrée donc ici là, je suis en train de lire la variable par positionl

merci à l'avance

+0

'coller -d » 'f1 f2 f3' fonctionne bien pour moi ... –

Répondre

0

Je pense que vous voulez que les tabulations séparent vos enregistrements en file4.txt ... qu'en pensez-vous?

NLINES=$(wc -l file1.txt | awk '{print $1}') 
rm -f file4.txt 
for i in $(seq 1 $NLINES); do 
    rec1=$(sed -n "$i p" file1.txt) 
    rec2=$(sed -n "$i p" file2.txt) 
    rec3=$(sed -n "$i p" file3.txt) 
    echo -e "$rec1\t$rec2\t$rec3" >> file4.txt 
done 

Mais en réalité coller, sans "-d ''" a donné le même résultat exact!

+0

Je reçois la syntaxe unexcepted à la fin de la ligne 9 – user3713876

+0

un couple d'erreurs ... ne l'a pas essayé - maintenant ça marche! – Sigismondo

+0

coller "-d ''" donne mon exigence. mais je dois couper la première position de tous les fichiers texte. – user3713876

0

vous pouvez réaliser même avec awk

awk '{a[FNR]=a[FNR]$0" "}END{for(i=1;i<=length(a);i++)print a[i]}' text1.txt text2.txt text3.txt >> text4.txt 
Questions connexes