2015-05-12 60 views
1

2個文件我有 文件1:如何合併在linux

line1 
line2 
line3 
.... 

文件2:

date1 
date2 
date3 
... 

,其結果應該是:

line1, date1 
line2, date2 
line3, date3 
... 

是否有辦法在Linux上用awk(我認爲)在命令行上做這個工作? 非常感謝

+1

只要使用'粘貼'。 –

+0

使用'pr'或'paste' –

回答

1

您可以使用awk

awk 'FNR==NR {a[NR]=$0;next} {print a[FNR]", "$0}' file1 file2 
line1, date1 
line2, date2 
line3, date3 
...., ... 

FNR==NR {a[NR]=$0;next}讀取第一個文件fil1時,使用它存儲在陣列a {print a[FNR]", "$0}打印出數組a行號作爲索引和數據來自file2

+0

謝謝,以及如何改變這個使'line1,date1 line2,date1 line3,date1'。我是新人awk –

+0

@WalterSchrabmair你意識到Jotne是對另一個答案發表了評論,告訴你發佈一個新問題的人不是嗎? –

+0

@Jotne請你能解釋awk聲明嗎?我是新人,想學習。它效果很好。 –

4

paste命令就可以了:

paste -d, file1 file2 
+0

不是一個大問題,但是這並不會給''後面的空間, – Jotne

+0

@藍色月亮非常感謝。我jsut意識到我也有以下問題:FILE1:'line1 line2 line3'和FILE2:'date1'結果應該是date1合併到file1的每一行。也有解決方案嗎? –

+0

@WalterSchrabmair是的 –

0

我希望這可以解決您的查詢。 根據您的要求調整此代碼。

paste <(awk 'BEGIN { FS=":";OFS="\t";ORS="\n\n"} { print $1 } END{}' file1.txt) <(awk 'BEGIN { FS=":";OFS="\t";ORS="\n\n"} { print $1 } END{}' file2.txt) >file3.txt