2011-12-06 27 views
5

mam dwa pliki tekstowe, które mają te struktury:Kombajny kolumn z różnych plików

plików 1

Column1:Column2 
Column1:Column2 
... 

Plik 2

Column3 
Column3 
... 

Chciałbym utworzyć plik o tej strukturze pliku:

Column1:Column3 
Column1:Column3 
... 

otwarci na wszelkie sugestie, ale byłoby miło, gdyby rozwiązanie może być wykonane z powłoki bash lub sed/awk/Perl/itp ...

Odpowiedz

11
cut -d: -f1 "File 1" | paste -d: - "File 2" 

ta przecina pole 1 z pliku 1 (rozdzielany dwukropkiem) i wkleja go z jedyną kolumną w pliku 2, oddzielając pola wyjściowe dwukropkiem.

4

Oto rozwiązanie awk. Zakłada, że ​​plik1 i plik2 mają równą liczbę linii.

awk -F : '{ printf "%s:",$1; getline < "file2"; print }' < file1 
2

Ponieważ czysta realizacja bash nie sugerowano, również zakładając taką samą liczbę linii (tylko bash V4):

mapfile -t file2 < file2 

index=0 
while IFS=: read -r column1 _; do 
     echo "$column1:${file2[index]}" 
     ((index++)) 
done < file1 

bash v3:

IFS=$'\n' read -r -d '' file2 < file2 

index=0 
while IFS=: read -r column1 _; do 
     echo "$column1:${file2[index]}" 
     ((index++)) 
done < file1 
Powiązane problemy