ด้วยawk
คำสั่งเท่านั้น:
awk -F, '{getline f1 <"file2" ;print f1,$3,$4}' OFS=, file1
รับบรรทัดจาก file1 และเก็บไว้ในตัวแปรโลคัลf1
จากนั้นพิมพ์บรรทัดที่เก็บไว้f1
และพิมพ์ฟิลด์ที่สาม ( $3
) และถัดไป ( $3
) จาก file1 ซึ่งคั่นด้วยเครื่องหมายจุลภาค,
โดยสิ้นเชิงและเปลี่ยน OFS (ตัวคั่นฟิลด์เอาท์พุต [ช่องว่างด้วย เริ่มต้น]) ถึงเครื่องหมายจุลภาค ( ,
)
คำสั่งสั้น ๆ จะเป็นดังนี้:
paste -d, file2 <(cut -d, -f3- file1)
เอบีซีดี
เอบีซีดี
เอบีซีดี
เอบีซีดี
วาง file2 จากนั้นตัดและวางคอลัมน์ที่สามไปยังถัดไป ( -f3-
) จาก file1
ด้วยawk
และpaste
(ตัวเลือก A)
คำสั่งด้านล่างยังคัดลอกสองคอลัมน์สุดท้าย ( C,D
) จาก file1 ที่ท้ายบรรทัดแต่ละบรรทัดใน file2:
paste -d',' file2 <(awk -F',' '{print $(NF-1)","$NF}' file1)
คำสั่งข้างต้นวางเนื้อหา file2 จากนั้นพิมพ์ตัวคั่นจุลภาค ( -d','
) แล้ววางสองฟิลด์สุดท้าย ( NF
เป็นดัชนีของฟิลด์สุดท้ายและ$NF
เป็นสตริงที่ดัชนีของมันคือNF
ดังนั้น$(NF-1)
ฟิลด์ที่สองก่อนฟิลด์สุดท้าย) จาก file1 เมื่อดัชนีเหล่านั้นนิยามใหม่ หรือแยกด้วยเครื่องหมายจุลภาค ( -F','
)
ด้วยawk
และpaste
(ตัวเลือก B)
คำสั่งนี้เหมือนกันกับข้างบน ( $3
และ$4
ชี้ไปที่ฟิลด์ที่สามและสี่ของแต่ละบรรทัดจาก file1):
paste -d',' file2 <(awk -F',' '{print $3","$4}' file1)
หรือโซลูชันอื่นที่มีcut
คำสั่ง:
paste -d, <(cut -d, -f1 file1) <(cut -d, -f2 file2) <(cut -d, -f3- file1)
คำสั่งcutในคำสั่งด้านบนก่อนตัดฟิลด์แรก ( -f1
ซึ่งจัดทำดัชนีด้วยตัวคั่นจุลภาค ( -d.
)) จาก file1 ( cut -d, -f1 file1
) จากนั้นตัดและวางฟิลด์ที่สองของ file2 ( cut -d, -f2 file2
) และในที่สุดก็ตัดแล้ววางคอลัมน์ที่สาม ( -f3
) ไปยัง nexts ( -
) จาก file1 ( cut -d, -f3- file1
) อีกครั้ง
คำสั่งนี้จะส่งคืนผลลัพธ์เดียวกัน:
paste -d, <(awk -F',' '{print $1}' file1) <(awk -F',' '{print $2}' file2) <(awk -F',' '{print $3","$4}' file1)
วางฟิลด์ที่สองจาก file1 ( awk -F',' '{print $1}' file1
) จากนั้นพิมพ์คอมมา ( -d,
) จากนั้นวางคอลัมน์ที่สองจาก file2 ( awk -F',' '{print $2}' file2
) จากนั้นวางคอลัมน์ที่สองและสุดท้ายของ file1 ( awk -F',' '{print $3","$4}' file1
) อีกครั้ง