Sadece awk
komut ile:
awk -F, '{getline f1 <"file2" ;print f1,$3,$4}' OFS=, file1
Dosya1'den bir satır alın ve yerel değişkene depolayın f1
, ardından depolanan satırı yazdırın f1
ve son olarak virgülle ayrılmış dosya1'den üçüncü ( $3
) ve ileri ( $3
) alanlarını yazdırın ,
ve OFS (çıktı alanı ayırıcısını [boşluk varsayılan]) - virgül ( ,
).
Kısa komut şöyle olacaktır:
paste -d, file2 <(cut -d, -f3- file1)
A, B, C, D
A, B, C, D
A, B, C, D
A, B, C, D
dosya2'yi yapıştırın, ardından üçüncü sütunu -f3-
dosya1'deki next ( ) öğesine yapıştırın .
İle awk
ve paste
(A seçeneği)
Aşağıdaki komut ayrıca C,D
dosya2'deki dosya1'deki son iki sütunu ( ) kopyalar :
paste -d',' file2 <(awk -F',' '{print $(NF-1)","$NF}' file1)
Komutun üstüne file2 içeriğini yapıştırın , ardından bir virgül ayırıcı ( -d','
) yazdırın ve sonra son iki alanı yapıştırın (son alanın NF
dizini ve dizininin $NF
bulunduğu dizedir NF
. Yani $(NF-1)
bu alan yeniden tanımlandığında dosya1'den son alanın önündeki ikinci alan) veya virgül izleyici ( -F','
) ile böler .
İle awk
ve paste
(B seçeneği)
Bu komut ayrıca yukarıdakiyle aynıdır ( $3
ve $4
dosya1'deki her satırın üçüncü ve dördüncü alanını işaret eder):
paste -d',' file2 <(awk -F',' '{print $3","$4}' file1)
Veya şu cut
komutu içeren başka bir çözüm :
paste -d, <(cut -d, -f1 file1) <(cut -d, -f2 file2) <(cut -d, -f3- file1)
kesim Yukarıdaki komutu komut (birinci alan kesme -f1
virgül sınırlayıcı (dizinlenmiş -d.
Dosya1 () 'den) cut -d, -f1 file1
), daha sonra kesilmiş ve dosya2'nin (ikinci alan yapıştırma cut -d, -f2 file2
) ve son olarak kesilmiş ve (üçüncü sütun yapıştırmak -f3
(nExts için) -
) dosya1 ( cut -d, -f3- file1
) 'den tekrar.
Bu komut aynı sonucu döndürür:
paste -d, <(awk -F',' '{print $1}' file1) <(awk -F',' '{print $2}' file2) <(awk -F',' '{print $3","$4}' file1)
ikinci alanı dosya1'den ( awk -F',' '{print $1}' file1
) -d,
yapıştırın, ardından bir virgül ( ) yazdırın , sonra ikinci sütunu dosya2'den ( awk -F',' '{print $2}' file2
) yapıştırın, son olarak dosya1'in ( ) ikinci ve son sütununu awk -F',' '{print $3","$4}' file1
tekrar yapıştırın .