ฉันมีไฟล์ข้อมูลหลายไฟล์ ตัวอย่างเช่น
sales.txt (ไฟล์ต้นฉบับมี 13 คอลัมน์)
วันที่ หน่วย $$ พนักงาน# abc def jkl mno pqr
1 ธันวาคม 10 500 2 1 2 3 4 5
2 ธ.ค. 12 450 3 6 7 8 9 10
3 ธ.ค. 13 550 3 11 12 13 14 15
ธ.ค. 4 15 600 3 16 17 18 19 20
...
...
supply.txt (อันเดิมมี 3 คอลัมน์)
วันที่ ต้นทุนต่อหน่วย source1 source2
ธ.ค.1 10 300 5 5
2 ธ.ค. 12 350 5 7
3 ธ.ค. 13 350 7 6
ธ.ค.4 15 400 6 9
...
...
และฉันมีไฟล์อีก 3 ไฟล์ซึ่งมี 2 คอลัมน์ในแต่ละไฟล์ สิ่งที่ฉันพยายามทำคือจับคู่วันที่ในไฟล์เหล่านี้ทั้งหมดและคัดลอกบรรทัดในไฟล์เดียว รหัสที่ฉันใช้สำหรับสิ่งนี้คือ:
# นับจำนวนแถวในไฟล์
ไฟล์ = "sales.txt"
N=$(awk -F, '{rows++} END{print rows}' $ไฟล์)
สำหรับแถวใน $(eval echo {2..$N})
ทำ
pattern=$(awk -v r=$row 'FNR==r {พิมพ์ $1}' $file);
วาง <(awk -v line=$row 'FNR==line{print $0}' $file)
<(awk -v line=$row 'FNR==line{$1=""; print $0}' supply.txt)
<(awk -v line=$row 'FNR==line{print $2}' otherfile1.txt)
<(awk -v line=$row 'FNR==line{print $2}' otherfile2.txt)
<(awk -v line=$row 'FNR==line{print $2}' otherfile3.txt) >> account.txt
เสร็จแล้ว
มันทำงานในการคัดลอกและค้นหาบรรทัด แต่รูปแบบในไฟล์เอาต์พุตเป็นดังนี้:
1 ธันวาคม 10 500 2 1 2 3 4 5 10 300 5 5
1 # มาจาก otherfile1
2 # มาจาก otherfile2
3 # มาจาก otherfile3
2 ธันวาคม 12 450 3 6 7 8 9 10 12 350 5 7
4
5
6
...
...
ฉันต้องการให้พวกเขาอยู่ในบรรทัดเดียวกัน ฉันได้ลองใช้เทคนิคมากมายที่พบในฟอรัมนี้ แต่ไม่มีวิธีใดที่ใช้ได้ผลสำหรับฉัน กรุณาช่วย