Text-Processing
按模板合併2個文件記錄
我正在嘗試使用 awk 以一種相當特殊的方式合併兩個文本文件,從 file1 中獲取兩行,從 file2 中獲取一組單詞(但放在單獨的行上),無限交替。file2 中的單片語由逗號分隔。例如:
文件 1
A Partridge in a Pear Tree Two Turtle Doves Three French Hens Four Calling Birds Five Gold Rings Six Geese a-Laying Seven Swans a-Swimming Eight Maids a-Milking Nine Ladies Dancing Ten Lords a-Leaping Eleven Pipers Piping Twelve Drummers Drumming
文件2
I was born, the red planet, I am hungry, on Mars I love frogs, they are so tasty, with gold sun, red ketchup
輸出文件
A Partridge in a Pear Tree Two Turtle Doves I was born the red planet I am hungry on Mars Three French Hens Four Calling Birds I love frogs they are so tasty with gold sun red ketchup Five Gold Rings Six Geese a-Laying Seven Swans a-Swimming Eight Maids a-Milking Nine Ladies Dancing Ten Lords a-Leaping Eleven Pipers Piping Twelve Drummers Drumming
細節:
- 在輸出文件中,每 2 行 file1 從欄位 File2 創建 4 個附加行
- file1 被分成兩行的對聯,無論內容如何
- file2 中的一行有 4 個組(即 3 個逗號)
- 在輸出文件中沒有逗號
- file2 中的一個組有固定數量的 fild
- file1 和 file2 可以任意長
- file2 總是小於 file1
- 用逗號分隔的 File2 欄位在每條記錄(3,3,3,2)中總是以相同的順序出現,即, $ 1 $ 2 $ 3, $ 4 $ 5 $ 6, $ 7 $ 8 $ 9, $ 10 S11
在輸出文件中要這樣排列
梨樹上的鷓鴣
兩隻斑鳩
$ 1 $ 2 $3
$ 4 $ 5 $6
$ 7 $ 8 $9
10 美元 S11
三隻法國母雞
四隻呼喚鳥
我愛青蛙
它們很好吃
有金太陽
紅番茄醬
五枚金戒指
六雁產蛋
七隻天鵝游泳
八女僕擠奶
九位女士跳舞
十主一躍
十一風笛手
十二鼓手擊鼓
- 當您到達一個文件的末尾但另一個文件中仍有數據時所需的行為未指定 - 剩餘數據(來自 file1)將被列印而不會更改
我該怎麼做呢?
file1
我相信你已經在你的例子中過早地放了第五行。如果我是對的,試試這個片段:
awk '(NR+1)%2{print $0;getline<"file2";n=split($0,a,", ");if(n>1)for(i in a)print a[i];next}1' file1
輸出:
A Partridge in a Pear Tree Two Turtle Doves I was born the red planet I am hungry on Mars Three French Hens Four Calling Birds I love frogs they are so tasty with gold sun red ketchup Five Gold Rings Six Geese a-Laying Seven Swans a-Swimming Eight Maids a-Milking Nine Ladies Dancing Ten Lords a-Leaping Eleven Pipers Piping Twelve Drummers Drumming