2013-09-23 66 views
1

我有10個文件具有相同的製表符分隔列結構。我需要合併每個文件的第8和第9列。我想出了以下的AWK代碼,但它一次只合並兩個文件。我正在尋找合併所有10個文件的幫助,我不確定這是否可行。千篇一律如何使用AWK從10個文件中的每個文件合併兩列

我所有的文件名(s1s2.txt,s3s4.txt,s5s6.txt,.... s19s20.txt)

#!/bin/bash 

awk ' 
BEGIN { 
     #load array with contents of the first file 
     while (getline < "s1s2.txt" > 0) 
     { 
      s1s2_counter++ 
      f1_8[s1s2_counter] = $8 
      f1_9[s1s2_counter] = $9 
     } 
} 
    {OFS="\t"} 

    { #output the columns 8 and 9 from the first file before the second file 
    print f1_8[NR],f1_9[NR], $8, $9 
    } ' s3s4.txt 

回答

4
awk -F'\t' '{a[FNR] = a[FNR] (NR==FNR?"":FS) $8 FS $9} END{for (i=1;i<=FNR;i++) print a[i]}' s1s2.txt .... s19s20.txt 

使用函數getline通常是錯誤的做法,見http://awk.info/?tip/getline

+1

謝謝,它的作品非常漂亮! – TonyGW

+0

不客氣。如果/當你對這個或任何其他答案感到滿意時,記得點擊該答案旁邊的複選標記,這樣其他人就不會浪費時間爲你提供替代方案。 –

+1

@ user2228325在SO你說感謝upvoting /接受他的答案。如果它解決了你的問題,不要忘記這麼做。 – Kent