paste
มีเครื่องมือเฉพาะสำหรับที่: มันเชื่อมต่อแต่ละบรรทัดเต็มจากไฟล์แรกกับบรรทัดที่สอดคล้องจากไฟล์ที่สอง คุณสามารถลบคอลัมน์ที่ไม่ต้องการก่อนหรือหลัง ตัวอย่างเช่นสมมติว่าคอลัมน์ของคุณคั่นด้วยแท็บ:
paste file1.txt file2.txt | cut -f 1,2,3,6
ต่อไปนี้เป็นวิธีการกรองไฟล์ทั้งสองที่อาศัยการทดแทนกระบวนการ ksh / bash / zsh ล่วงหน้า
paste <(<file1.txt sed 's/[[:space:]][[:space:]]*[^[:space:]]*$//') \
<(<file1.txt sed 's/^[^[:space:]]*[[:space:]][[:space:]]*//')
Awk มุ่งเน้นไปที่การประมวลผลครั้งละหนึ่งไฟล์ แต่คุณสามารถโทรgetline
เพื่ออ่านจากไฟล์อื่นแบบขนาน
awk '
BEGIN {file2=ARGV[2]; ARGV[2]="";}
{$0 = $0 ORS getline(); print $1, $2, $3, $6;}
' file1.txt file2.txt
จนถึงตอนนี้ฉันคิดว่าคุณต้องการจับคู่บรรทัดที่ 1 ของไฟล์ 1 กับบรรทัดที่ 1 ของไฟล์ 2, บรรทัดที่ 2 ของไฟล์ 1 กับบรรทัดที่ 2 ของไฟล์ 2 ฯลฯ หากคุณต้องการจับคู่เนื้อหาของคอลัมน์นั่นคือ เรื่องที่แตกต่างอย่างสิ้นเชิง join
จะทำงานโดยมีเงื่อนไขว่าคอลัมน์ที่คุณต้องการจับคู่ถูกเรียงลำดับ
pr -m -t -s\ File1.txt File2.txt | gawk '{print $1,$2,$3, $6}' > File3.txt