2017-09-16 122 views
-6

File1:每條記錄以'〜'開始,並且像下面的&這樣的數字以相同的結尾。每條記錄在開始和結束行之間有八行,並帶有一些'_'。基於一些條件合併兩個文本文件

 ~1 
    001 
    COMON 
    _ 
    98273497335 
    _ 
    _ 
    003 
    +7346542347 
    ~1 
    ~2 
    001 
    . 
    . 
    ~2.........so on 

File2:它包含每個記錄的默認值,如下所示。它只包含一條記錄。 File1中的每條記錄應與File2進行比較,並將所有'_'替換爲File2中相對於該位置的默認值。

~ 
    001 
    COMON 
    0000000000 
    0 
    00 
    00000 
    +0.0 
    +0000000000 
    ~ 

輸出文件:在「_」從文件1,應通過文件2的記錄中的相應位置的默認值取代。

~1 
001 
COMON 
0000000000 
98273497335 
00 
00000 
003 
+7346542347 
~1 
~2 
001 
. 
. 
~2.........so on 
+2

[Stack Overflow](http://stackoverflow.com/tour)是專業和愛好者程序員的問答網站。請展示您的編碼工作。 – Cyrus

+0

好吧,我對shell腳本沒有太多的想法。一旦我得到了我可以實現的想法,然後我會自己回覆一些解決方案。我希望我能在這裏得到一些幫助...... – user8552135

+0

我沒有看到問題出現了什麼問題,要求很明確,帶有示例輸入和輸出。 「缺乏研究」,或許,但不是「太寬泛」。 –

回答

1

爲此,您可以用awk:

awk 'NR == FNR { line[NR] = $1; next } 
    { print ($1 == "_" ? line[(FNR - 1) % 10 + 1] : $1) }' file2 file1 

NR == FNR目標的第一個文件。使用行號NR作爲關鍵字,從file2中讀取並保存10行。

由於第一個塊中的next,第二個塊用於第二個文件。如果第一個字段爲「_」,則使用該行的替代值,(FNR - 1) % 10 + 1生成序列1..10 1..10 1..10等,因此將使用查找數組中的對應行。

+0

謝謝,湯姆..我感謝你的幫助。 – user8552135

+0

@ user8552135沒問題,它是做你想做的嗎? –